c++ STL容器适配器
一、标准库顺序容器适配器的种类
二、什么是容器适配器
三、容器适配器
| 种类 | 默认顺序容器 | 可用顺序容器 | 说明 |
| stack | deque | vector、list、deque | |
| queue | deque | list、deque | 基础容器必须提供push_front()运算 |
| priority_queue | vector | vector、deque | 基础容器必须提供随机访问功能 |
四、定义适配器
五、容器适配器的使用
- #include <iostream>
- #include <stack>
- #include <string>
- using namespace std;
- int main()
- {
- stack<string> words;
- string str;
- cout<<"Enter some words(Ctrl + Z to end):"<<endl;
- while(cin >> str)
- {
- words.push(str);
- }
- while(words.empty() == false)
- {
- cout<<words.top()<<endl;
- words.pop();
- }
- return 0;
- }
2、使用stack处理带圆括号的表达式。遇到左括号时,将其标记下来。遇到右括号时,弹出stack中两括号之间的元素(包括括号),并压入一个"@"表示其已被替换。
- #include <iostream>
- #include <stack>
- #include <string>
- using namespace std;
- int main()
- {
- stack<char> sta;
- string str;
- cin>>str;
- string::iterator iter = str.begin();
- while(iter != str.end())
- {
- if(*iter != ')')
- sta.push(*iter);
- else //*iter == ')'
- {
- while(sta.top() != '(' && !sta.empty())
- {
- sta.pop();
- }
- if (sta.empty())
- {
- cout<<"No '(' matched!"<<endl;
- }
- else //*iter == '('
- {
- sta.pop();
- sta.push('@');
- }
- }
- ++iter;
- }
- while(!sta.empty())
- {
- cout<<sta.top()<<endl;
- sta.pop();
- }
- return 0;
}
c++ STL容器适配器的更多相关文章
- STL容器适配器 stack, queue
stack是一种后进先出(last in first out)的数据结构.它只有一个出口,如图所示.stack允许新增元素,删除元素,取得最顶端元素.但除了最顶端外,没有其他任何地方可以存储stack ...
- STL之容器适配器queue的实现框架
说明:本文仅供学习交流,转载请标明出处,欢迎转载! 上篇文章STL之容器适配器stack的实现框架已经介绍了STL是怎样借助基础容器实现一种经常使用的数据结构stack (栈),本文介绍下第二种STL ...
- c++ 顺序容器学习 - 容器适配器
摘要: 对 容器适配器 的疑问. 刚开始接触 容器适配器 时,总感觉怪怪的,认为多此一举,顺手搜了搜,原来我在这一点is not alone: STL容器适配器的用途 其中有个老兄说的好,这里 引用一 ...
- STL之容器适配器stack的实现框架
说明:本文仅供学习交流,转载请标明出处,欢迎转载! 一提到适配器(adapter).我们就想到了早期用电话线上网所用的调制解调器,俗称"猫"."猫"的作用是实现 ...
- STL标准库-容器适配器
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 上一节介绍了仿函数适配器,这节主要介绍容器适配器和迭代器适配器的概念,其实容器适配器和迭代器其适配器就是封装了一些其他class ...
- 初步STL该容器适配器
容器适配器 特点 容器一定的顺序来实现(让现有的以集装箱堆放/式工作) 分类 1) stack: 头文件 <stack> • 栈 -- 后进先出 2) queue: 头文件 <que ...
- ###STL学习--适配器
点击查看Evernote原文. #@author: gr #@date: 2014-08-24 #@email: forgerui@gmail.com STL中的适配器. ###stl学习 |--迭代 ...
- [翻译] C++ STL容器参考手册 (总册)
1. 写在最前面 这将是博主的第一篇技术博客,思考再三决定从翻译开始.这将是一个系列的博客,由不同的章节组成,章节之间由超链接联系,开发过程将使用增量式开发,每次完成一个章节.本篇是本系列的总册,提供 ...
- C++顺序性容器、关联性容器与容器适配器
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
随机推荐
- Nginx:413 Request Entity Too Large解决
最近在做给博客添加上传PDF的功能,但是在测试上传文件的过程中遇到了413 Request Entity Too Large错误.不过这个无错误是很好解决的,这个错误的出现是因为上传的文件大小超过了N ...
- vs code 使用git
1.下载git https://git-scm.com/ 2. git 全局设置 git config --global user.name "xxxx" git config - ...
- 【项目记录】-路灯监测 gmap.net
需求 2016年5月,客户要求在地图上显示路灯及数据,分析数据生成报表,以便查看分析路灯情况. 选型 国外项目就不考虑国内的地图了,开始想使用google的web地图,考虑到地图上标记物过多影响性能及 ...
- hdu4148 Length of S(n)
Length of S(n) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- Redis基础及入门
一. 什么是 Redis Redis 是一个可基于内存,有着完备的持久化机制并以 Key-Value 形式存储的非关系型数据库.也称为数据结构服务器. 二. Redis 的 ...
- 第十九章 Django的ORM映射机制
第十九章 Django的ORM映射机制 第一课 Django获取多个数据以及文件上传 1.获取多选的结果(checkbox,select/option)时: req.POST.getlist('fav ...
- 发布iOS应用时,Xcode报错:Application failed codesign verification.
如下图,在发布应用时,因为codesign问题卡住了.尝试修改Target中的code sign setting,没有效果. 接着,在Developer Center删除所有证书,甚至包括Apps I ...
- NJU 1010 Air
思路:把那张图打表(吐血...),然后就按照规则输出就行. AC代码 #include <cstdio> #include <cmath> #include <cctyp ...
- 基于 HTML5 Canvas 的交互式地铁线路图
前言 前两天在 echarts 上寻找灵感的时候,看到了很多有关地图类似的例子,地图定位等等,但是好像就是没有地铁线路图,就自己花了一些时间捣鼓出来了这个交互式地铁线路图的 Demo,地铁线路上的点是 ...
- django框架 - 实时查看执行的sql语句
django框架采用的ORM模型,我们可以通过mysql的日志记录实时看到执行的sql语句,具体步骤如下: 第一步:找到mysql的配置文件 第二步:编辑mysql配置文件 第三步:重启mysql 第 ...