我正在为一个项目使用 std::stack
,我需要继续检查相同的值。我检查了成员函数,但找不到适合此任务的成员函数。
出现的第一个想法是使用复制堆栈,但是,在这种情况下,程序可能会浪费大量额外空间,并且在这个级别的项目中不使用用户定义的堆栈类很重要(是的,我做了设计错误...)。
那么,有什么想法吗?
谢谢!
最佳答案
避免使用 std::stack
,它只是一个无用的包装器,可以简化底层容器的接口(interface)。使用带有 push_back
/pop_back
的 std::vector
进行插入插入/移除(最后的插入/移除摊销 O(1))或 std::deque
,从那里你可以在任何一侧进行 push/pop 而不会显着改变性能(仍然摊销 O(1))。在这两种情况下,您都可以使用随机访问迭代器遍历所有元素。
(同样适用于std::queue
:没用,直接使用std::deque
(不是 vector)与push_back
/pop_front
)
关于C++ std::stack 遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20038762/