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

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之后的所有元素都向前移动,这是得不偿失的,效率极低。

相关推荐

桂花是什么季节开的,花期有多长
365bet网页版

桂花是什么季节开的,花期有多长

📅 06-29 👁️ 1460
【集锦】压哨绝杀!比利时连追3球逆转日本
28365-365体育备用

【集锦】压哨绝杀!比利时连追3球逆转日本

📅 07-03 👁️ 8665
HCG正常值和孕周对照表
28365-365体育备用

HCG正常值和孕周对照表

📅 06-27 👁️ 6114