C++ std::stack 遍历

标签 c++ stack std

我正在为一个项目使用 std::stack,我需要继续检查相同的值。我检查了成员函数,但找不到适合此任务的成员函数。

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

那么,有什么想法吗?

谢谢!

最佳答案

避免使用 std::stack,它只是一个无用的包装器,可以简化底层容器的接口(interface)。使用带有 push_back/pop_backstd::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/

相关文章:

c++使用通过数据包接收的 key 加密文本? key 沙皇?

python - 使用 UDP 套接字将 C++ 结构转换为 Python

c++ - 您可以在迭代时从 std::list 中删除元素吗?

c++ - C++中的map数据结构是什么

c++ - 将 std::map 与 std::list::iterator 一起使用

C++ 函数 : ampersand vs asterisk

c++ - vc++ (sqlite) 如何区分语句是 SELECT - 还是 NOT?

java - 线程和方法调用如何在 Java 中的堆栈上分配?

c - 在 C 中使用省略号传递参数

c# - C#-在哪里执行验证