C ++ std :: stack Traversal

时间:2013-11-18 01:50:35

标签: c++ stack std

我正在使用std::stack作为项目,我需要前往检查相同的值。我检查了成员函数,但是我找不到适合这个任务的函数。

出现的第一个想法是使用副本堆栈但是,在这种情况下,程序可能会浪费大量额外空间,而不使用用户定义的堆栈类在项目的这个级别很重要(是的,我做了设计错误......)。

那么,任何想法?

谢谢!

1 个答案:

答案 0 :(得分:5)

避免std::stack,它只是一个无用的包装器,它使底层容器的接口变得笨拙。使用std::vectorpush_back / pop_back进行插入/移除(插入/移除最后是摊销O(1))或std::deque,从而可以推送/在任何一方都没有显着改变(仍然摊销O(1))。在这两种情况下,您都可以使用随机访问迭代器遍历所有元素。

(同样适用于std::queue:它没用,直接使用std::deque / push_back <{1>}({em> not vector)