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之后的所有元素都向前移动,这是得不偿失的,效率极低。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)