使用 std::stack 而不仅仅是 deque、vector 或 list 有什么优点和缺点

What are the advantages and disadvantages of using std::stack instead of just deque, vector or list

本文关键字:什么 list 缺点 vector stack std 不仅仅是 deque 使用      更新时间:2023-10-16

我正在编写一个非常简单的std::stack,使用vector作为其底层容器。我意识到我可以将所有 push()、pop() 和 top() 函数替换为矢量容器的 push_back()、pop_back() 和 back()。

我的问题是:当底层容器的受控使用足够时,为什么要使用容器适配器?为什么不只使用双端、向量或列表?会浪费内存或处理时间吗?

当你的代码说std::stack时,读者很清楚他们需要在容器上执行哪些操作......它进行通信和记录,同时强制不使用其他操作。 这可以帮助他们快速形成代码中算法逻辑的印象。 然后,很容易替换遵循相同接口的其他实现。

这有点像使用 std::ifstream 而不是 std::fstream - 你可以用std::fstream读写,但无论谁阅读你的代码,在意识到它仅用于读取之前,都需要考虑你把流放入的更多可能的用途;你会浪费他们的脑力劳动。