[英]Why is std::stack considered useless?
许多关于 SO 的答案和评论声称使用std::stack
几乎没有用,但除了“使用std::vector
或std::deque
代替”之外,并没有真正给出其他理由。
为什么? 它出什么问题了?
索赔证据:
有句话是这样说的:
不要诱使某人做您不希望他/她做的事情。
堆栈是一种定义良好的数据结构。 它的行为由std::stack
很好地实现。
如果您只需要一个堆栈,仅此而已,那么请选择std::stack
。 它将帮助您坚持数据结构的目的,并使您的程序更清晰易懂且更易于维护。
但是尝试评估您是否需要比堆栈提供的更多功能。
例如,如前所述,支持std::deque
或std::vector
一个很好的理由是迭代器。
在所有情况下,作为使用 std::stack 几乎没有用的事实的证据,正是这种附加功能(超出堆栈的功能)促使放弃std::stack
以支持另一个容器。
假设 std::stack 不是无用的,但只有在以下情况之一为真时它才是合理的选择:
基本上 std::stack 缺少任何类型的迭代器接口意味着它不能与任何标准算法一起使用,如果这对您来说是一个问题,那么使用您视为堆栈的向量或滚动您自己的堆栈模板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.