1 简介

容器 模板 特点
容器 模板 特点
栈容器 stack 后进先出(LIFO)
队列容器 queue 先进先出(FIFO)
优先级队列容器 priority_queue 最高优先级元素先出

2 栈容器

2.1 常见用法

(1)入栈操作(for循环次数)

  for(int i = 0; i<10;++i){s.push(i);  //a1.入栈操作(for循环次数)}

(2)出栈操作 ,a. while循环判空;b.只能打印头部

while(!s.empty()){cout << s.top() << "\t";s.pop();  //a2.出栈操作  ,while循环判空;}

(3)不能进行的操作:(栈和vector,list之间的转化)
b1.不能随机访问s[]
b2.不能使用迭 stack::iterator it = s.begin();
b3.不能使用 for(auto m:s){}进行遍历

(4)解决之道:将栈转化为顺序容器(vector,list,dequeue)
c1.强制类型转化符号vector---->stack

vector<int> vec ={1,2,3,4,5};
stack<int,vector<int>> s1(vec); //c1强制类型转化符号vector---->stack

c2.采用push_back加pop()的做法,实现了逆序打印

vector<int> res;while(!s1.empty()){res.push_back(s1.top());  //c2.采用push_back加pop()的做法,实现了逆序打印s1.pop();}for(auto m:res){               //c3.vectorcout << m << "\t" ;}
  • 完整案例
#include <iostream>
#include <stack>
#include <vector>
using namespace std;int main()
{stack<int> s;for(int i = 0; i<10;++i){s.push(i);  //a1.入栈操作(for循环次数)}cout << s.size() << endl;;while(!s.empty()){cout << s.top() << "\t";s.pop();  //a2.出栈操作  ,while循环判空;}cout << endl;cout << s.size() << endl;// b不能进行的操作://b1.不能随机访问s[]//b2.不能使用迭代器//stack<int>::iterator it = s.begin();//b3.不能使用  for(auto m:s){}进行遍历//c.解决之道:将栈转化为顺序容器(vector,list,dequeue)vector<int> vec ={1,2,3,4,5};stack<int,vector<int>> s1(vec); //c1强制类型转化符号vector---->stackvector<int> res;while(!s1.empty()){res.push_back(s1.top());  //c2.采用push_back加pop()的做法,实现了逆序打印s1.pop();}for(auto m:res){               //c3.vectorcout << m << "\t" ;}cout << endl;return 0;
}

2.2 面试题

2.2.1 (面试题24)翻转链表

翻转链表

3 队列容器

3.1 常见用法

(1) 入队操作

for(int i = 0; i<10;++i){q.push(i);  //a1.入队操作(for循环次数)}

(2) 出队操作 ,while循环判空; ,可以打印首尾

while(!q.empty()){cout << q.front() << "\t" << q.back()<<endl;q.pop();  //a2.出队操作  ,while循环判空; ,可以打印首尾}

(3)队列和容器(list,vector)的转化
b不能进行的操作:
//b1.不能随机访问s[]
//b2.不能使用迭代器
//queue::iterator it = s.begin();
//b3.不能使用 for(auto m:s){}进行遍历

//c.解决之道:将栈转化为顺序容器(list,dequeue)

  list<int> l ={1,2,3,4,5};queue<int,list<int>> q1(l); //c1强制类型转化符号list---->queue

(4)出队

while(!q1.empty()){cout << q1.front() << "\t" << q1.back()<<endl;q1.pop();  //a2.出栈操作  ,while循环判空;}
  • 完整案例
#include <iostream>
#include <queue>
#include <list>
using namespace std;int main()
{queue<int> q;for(int i = 0; i<10;++i){q.push(i);  //a1.入队操作(for循环次数)}cout << q.size() << endl;;while(!q.empty()){cout << q.front() << "\t" << q.back()<<endl;q.pop();  //a2.出队操作  ,while循环判空; ,可以打印首尾}cout << endl;cout << q.size() << endl;// b不能进行的操作://b1.不能随机访问s[]//b2.不能使用迭代器//queue<int>::iterator it = s.begin();//b3.不能使用  for(auto m:s){}进行遍历//c.解决之道:将队列转化为顺序容器(list,dequeue,vector)list<int> l ={1,2,3,4,5};queue<int,list<int>> q1(l); //c1强制类型转化符号list---->queuewhile(!q1.empty()){cout << q1.front() << "\t" << q1.back()<<endl;q1.pop();  //a2.出栈操作  ,while循环判空;}cout << endl;return 0;
}

C++基础13:容器适配器(Container Adapte)相关推荐

  1. c++基础:8.2.5_容器适配器(Container Adapte)

    文章目录 1 简介 (***)2 栈容器 2.1 常见用法 2.2 面试题 2.2.1 (面试题24)翻转链表 方法1:将链表转化为stack 方法2:将链表转化为vector (***)3 队列容器 ...

  2. Docker基础之容器(container)创建命令

    一.Docker基础之容器(container)创建命令的用法 docker container create --name myetcd etcd_cluster:gc4.0 create命令完成的 ...

  3. [C++](13)stack queue priority_queue 模拟实现:容器适配器,deque介绍,仿函数详解

    文章目录 使用 stack 栈 queue 队列 priority_queue 优先级队列 什么是容器适配器? deque 容器简单介绍 模拟实现 stack queue priority_queue ...

  4. C++的三种容器适配器

    1.对容器适配器的理解 C++提供了三种容器适配器(container adapter): stack,queue和priority_queue. stack和queue基于deque实现,prior ...

  5. C++ STL : 模拟实现STL中的容器适配器priority_queue

    目录 priority_queue 文档介绍 实现思路 思路 仿函数 实现 priority_queue 文档介绍 文档介绍 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含 ...

  6. C++ STL : 模拟实现STL中的容器适配器stack和queue

    目录 什么是容器适配器 stack stack的文档介绍-(来自cplusplus) stack的实现 queue queue的文档介绍-(来自cplusplus) queue的实现 什么是容器适配器 ...

  7. C++ 容器适配器(stack、queue、priority_queue)

    容器适配器 首先,我们要明白适配器是干什么的?其实就是一个接口转换装置,是得我们能用特定的方法去操作一些我们本来无法操作的东西.举一个例子,比如你的一个设备支持串口线,而你的电脑支持的是usb口,这时 ...

  8. 5.1 c++ STL 容器适配器简介

    1. 适配器简介 在详解什么是容器适配器之前,初学者首先要理解适配器的含义. 其实,容器适配器中的"适配器",和生活中常见的电源适配器中"适配器"的含义非常接近 ...

  9. 第03章 Go语言容器(container)

    变量在一定程度上能满足函数及代码要求.如果编写一些复杂算法.结构和逻辑,就需要更复杂的类型来实现.这类复杂类型一般情况下具有各种形式的存储和处理数据的功能,将它们称为"容器(containe ...

最新文章

  1. edem颗粒替换_EDEM后处理问题的大汇总,方便易懂!
  2. cordic ip核 vivado_Xilinx Vivado CORDIC IP求解atan 反正切
  3. 有什么用_app用什么软件编写
  4. vmware嵌套虚拟化对服务器的影响,VMware 虚拟机嵌套部署 KVM 虚拟机小结
  5. Community Server架构:博客业务详细分析(转)
  6. 安卓开发:用ImageView放上图片后上下有间隙
  7. CUDA编译器nvcc的用法用例与问题简答
  8. 重新开始我的blog内容!
  9. Python的7大就业方向,转行的人适合哪个方向?学了Python能干什么?
  10. 移动终端安全威胁与应对措施
  11. jw播放器 html5,JW播放器HTML5专用模式
  12. CSS3+jquery实现图片万花筒3D旋转动画特效
  13. CentOS Stream 9 下如何安装使用花生壳并做内网穿透建站
  14. 喵哈哈村的魔法考试 Round #6 (Div.3) 题解
  15. 如何正确理解「指标」和「标签」
  16. Open Cascade 多视图-多个3D视图
  17. 1007. Maximum Subsequence Sum (25)-PAT甲级真题(最大连续子序列和、动态规划dp)
  18. 英首相:比起无协议脱欧 国会阻挠脱欧可能性更高
  19. 微创新:5种微笑改变创造伟大产品
  20. Java(JCo3)与SAP系统相互调用

热门文章

  1. 网络工程师-计算题-专题
  2. identity4使用mysql_IdentityServer4-从数据库获取User登录并对Claims授权验证(五)
  3. 终端命令 解决Mac OS X 10.8 休眠 WiFi 自动断网QQ自动掉线问题
  4. 顶尖作品集封面封底来了 共28套
  5. 电脑重装系统后电脑黑屏有光标怎么回事
  6. 101 个 MySQL 的调节和优化的提示
  7. bilibili_Linux7_用户和用户组管理
  8. 迷你linux操作系统,使用busybox做一个小巧的Linux操作系统
  9. SSL 链接安全协议的enum
  10. 【Linux防火墙】网络ip和端口管理