stack和queue的底层容器封装 以及提供随机存储的容器
在 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() 成员函数
题外话
通过改造可以将vector作为queue 的底层容器,但是queue支持pop_front操作,vector执行pop_front操作需要将begin之后的所有元素都向前移动,这是得不偿失的,效率极低。
浙公网安备 33010602011771号