在 C++ 中,std::stack
和 std::queue
是容器适配器,它们提供了特定的接口,依赖于某个容器类(如 std::deque
或 std::list
)来处理元素1。
-
std::stack
:std::stack
默认使用std::deque
作为其底层容器2。但是,你也可以在创建std::stack
对象时指定其他的底层容器,只要这个容器支持back
、push_back
和pop_back
操作。因此,除了std::deque
,std::vector
和std::list
也可以作为std::stack
的底层容器1。 -
std::queue
:std::queue
默认使用std::deque
作为其底层容器2。但是,你也可以在创建std::queue
对象时指定其他的底层容器,只要这个容器支持front
、back
、push_back
和pop_front
操作。因此,除了std::deque
,std::list
也可以作为std::queue
的底层容器1。
需要注意的是,std::vector
不能作为 std::queue
的底层容器,因为 std::vector
不支持 pop_front
操作1
在 C++ 的 STL(标准模板库)中,以下容器提供了随机存取:
-
std::vector
:vector
是一个动态数组,能够根据需要增长以容纳其元素4。它允许通过operator[]
进行随机访问1。 -
std::array
:array
是一个固定大小的数组,支持随机访问2。 -
std::deque
:deque
(双端队列)是一个可以在两端进行插入和删除操作的序列容器,同时也支持随机访问2。
这些容器都提供了 operator[]
和 at()
成员函数