std::vector
和 std::stack
有什么区别?
显然,向量可以在集合内删除项目(虽然比列表慢得多),而堆栈是一个仅支持 LIFO 操作的集合。
但是,对于末尾项操作,堆栈是否更快?它是链表还是动态重新分配的数组?
我在网上找不到太多关于堆栈的信息,但如果我正确地理解它们(它们类似于实际线程堆栈;push、pop 等,以及那个top()
方法),那么它们似乎非常适合窗口层叠管理。
stack
不是一个容器,而是一个容器适配器。它有一个 vector
,deque
或类似的容器作为成员变量来实际存储元素。请记住:它的声明方式如下:
template<
class T,
class Container = std::deque<T>
> class stack;
stack
的作用仅是将用户界面限制在该内部容器中,操作的性能特征完全取决于底层容器的性能特征。
vector
的性能优于list
,尽管速度较慢。 - James McNellis