c++容器适配器栈和队列

本文详细探讨了C++中stack, queue和priority_queue的使用方法,包括元素的添加、删除和检索操作。通过实例展示了如何利用这些容器进行数据管理,为读者提供了深入理解并运用这些容器的基础。

//stack:栈

//queue:队列

//priority_queue:有优先级的队列,优先级高的在前

//size_type:一种类型,足以保存当前类型的最大对象的大小

//value_type:元素类型

//container_type:实现适配器的底层容器类型

 

cout << "===================stack===================" << endl;

 

stack<int> sta;

sta.emplace(0);//由0构造

for (size_t ix = 0; ix < 5; ++ix)

{

sta.push(ix);//添加元素,压入栈顶

}

while (!sta.empty())

{

cout << sta.top() << endl;//弹出栈顶元素,但不删除

sta.pop();//删除栈顶元素

}

 

 

cout << "============queue==priority_queue=================" << endl;

//pop:删除queue首元素或priority_queue优先级最高的元素

queue<int> que;

que.push(3);

que.push(4);//在尾部添加元素或priority_queue适当的位置添加元素

cout << que.front() << endl;//返回首元素不删除

cout << que.back() << endl;//返回尾元素不删除,只适用于queue

que.pop();

cout << que.front() << endl;

//top:返回优先级最高的元素,只适用于priority_queue

//emplace:构造

<think>嗯,用户让我介绍队列经典容器适配器,作为C++专家,我需要详细解答。首先,队列都是容器适配器,这点要说明清楚。它们的底层通常用deque或list实现,但也可以指定其他容器是LIFO结构,常用的操作有push、pop、top。要举一个例子,比如用反转字符串或者处理函数调用。队列是FIFO,操作包括push、pop、front、back。例子可以是任务队列或者BFS算法。 容器适配器的概念很重要,它们基于其他容器实现,提供不同的接口。要解释为什么叫适配器,因为它们调整了底层容器的接口,比如stack限制了deque的功能,只允许一端操作。 可能用户还不太清楚如何自定义底层容器,比如用vector实现,这时候需要提到在声明时的第二个模板参数。还要注意stackqueue不支持迭代器,因为它们限制了访问方式。 需要提到STL中的头文件,比如#include <stack>#include <queue>。另外,标准库中的priority_queue虽然也是适配器,但属于队列的变种,这里可能用户没问,但可以留到相关问题里。 然后,相关问题应该围绕它们的实现、区别、应用场景以及容器适配器的特性。比如,队列的区别,容器适配器容器的不同,如何选择底层容器,以及在递归中的应用。这样能帮助用户深入理解。</think><< Stack)、队列Queue)是C++ STL中的经典容器适配器,它们通过封装底层容器实现特定数据访问规则: 一、stack) 1. LIFO(后进先出)结构 2. 核心操作: - push() 压 - pop() 弹 - top() 访问顶 - empty()/size() 容量查询 3. 底层实现:默认使用deque,也可指定vector/list ```cpp #include <stack> std::stack<int> s; // 默认deque s.push(10); s.push(20); std::cout << s.top(); // 20 s.pop(); ``` 二、队列queue) 1. FIFO(先进先出)结构 2. 核心操作: - push() 入队 - pop() 出队 - front()/back() 访问首尾 - empty()/size() 3. 底层实现:默认使用deque,可指定list ```cpp #include <queue> std::queue<std::string> q; q.push("first"); q.push("second"); std::cout << q.front(); // "first" q.pop(); ``` 三、容器适配器特性 1. 不是独立容器,依赖底层容器(deque/vector/list) 2. 通过限制基础容器接口实现特定访问模式 3. 不支持迭代器操作(无法遍历元素) 4. 时间复杂度: - /队列操作均为O(1) - 底层容器影响性能: - vector实现可能导致扩容拷贝 - list实现队列保证稳定性能 典型应用场景: - :函数调用、括号匹配、表达式求值 - 队列:消息队列、BFS算法、缓冲机制
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值