C++ std :: stack Traversal

ciy*_*iyo 1 c++ stack std

我正在使用std::stack一个项目,我需要在它上面检查相同的值.我检查了成员函数但是,我找不到适合这个任务的函数.

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

那么,任何想法?

谢谢!

Mat*_*lia 5

避免std::stack,它只是一个无用的包装器,使底层容器的接口变得笨拙.使用std::vectorpush_back/ pop_back用于插入插入/移除(插入/移除最后是分摊O(1)),或者std::deque,您可以在任何一侧推/弹而不会有显着的性能变化(仍然是摊销的O(1)).在这两种情况下,您都可以使用随机访问迭代器遍历所有元素.

(同样适用于std::queue:它没用,直接使用std::deque(不是矢量)和push_back/ pop_front)