【发布时间】:2012-09-11 06:38:12
【问题描述】:
std::vector 和 std::stack 有什么区别?
很明显,向量可以删除集合中的项目(尽管比列表慢得多),而堆栈被构建为仅限 LIFO 的集合。
但是,对于最终项目的操作,堆栈是否更快?是链表还是动态重新分配的数组?
我找不到关于堆栈的太多信息,但如果我正确地描绘了它们(它们类似于实际的线程堆栈;推送、弹出等 - 以及 top() 方法),那么它们看起来很完美用于窗口堆叠管理。
【问题讨论】:
-
前者是容器,后者是容器适配器。
-
"虽然比 list 慢得多" 从理论上讲,是的。实际上,没有。对于几乎所有用例,
vector的性能都将优于list。 -
@JamesMcNellis 用于删除大型矢量数据集中间的记录?这不是比双重列出的列表慢得多吗?