为什么std :: stack被认为是无用的?

Cas*_*sey 2 c++ stack

关于SO的众多答案和评论声称使用std::stack几乎没用,但除了"使用std::vectorstd::deque替代" 之外,并没有真正给出其他理由.

为什么?它出什么问题了?

索赔证据:

err*_*kos 10

有一种说法是这样的:

不要诱惑别人去做你不希望他/她做的事情.

堆栈是一种定义明确的数据结构.它的行为很好地实现了std::stack.

如果您只需要一个堆栈而不是更多,那就去吧std::stack.它将帮助您坚持数据结构的目的,并使您的程序更清晰易懂,更易于维护.

但是,请尝试评估您是否需要比堆栈提供的功能更多的功能.

例如,正如已经陈述的那样,有充分的理由支持std::deque或者使用std::vector迭代器.


在所有情况下,作为使用std :: stack几乎无用的事实的证据,它是一种额外的功能(超出堆栈的功能),这促使放弃std::stack了另一个容器.