使用 std::stack 而不仅仅是双端队列、向量或列表的优点和缺点是什么

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

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

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

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

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