stack和queue的底层容器封装 以及提供随机存储的容器

发布时间 2023-12-04 15:42:31作者: ponder776

在 C++ 中,std::stackstd::queue 是容器适配器,它们提供了特定的接口,依赖于某个容器类(如 std::dequestd::list)来处理元素1

  • std::stackstd::stack 默认使用 std::deque 作为其底层容器2。但是,你也可以在创建 std::stack 对象时指定其他的底层容器,只要这个容器支持 backpush_backpop_back 操作。因此,除了 std::dequestd::vectorstd::list 也可以作为 std::stack 的底层容器1

  • std::queuestd::queue 默认使用 std::deque 作为其底层容器2。但是,你也可以在创建 std::queue 对象时指定其他的底层容器,只要这个容器支持 frontbackpush_backpop_front 操作。因此,除了 std::dequestd::list 也可以作为 std::queue 的底层容器1

   需要注意的是,std::vector 不能作为 std::queue 的底层容器,因为 std::vector 不支持 pop_front 操作1

在 C++ 的 STL(标准模板库)中,以下容器提供了随机存取:

  • std::vectorvector 是一个动态数组,能够根据需要增长以容纳其元素4。它允许通过 operator[] 进行随机访问1

  • std::arrayarray 是一个固定大小的数组,支持随机访问2

  • std::dequedeque(双端队列)是一个可以在两端进行插入和删除操作的序列容器,同时也支持随机访问2

这些容器都提供了 operator[]at() 成员函数