STL学习笔记--特殊容器
容器配接器
(1) stack
栈 后进先出(LIFO), 头文件#include<stack>
template<class _Ty,
class _Container = deque<_Ty> >
class stack
{ // LIFO queue implemented with a container
...
可以看出,stack内部缺省使用deque实现。可以使用任何序列式容器来支持stack,只要支持back()
,push_back
操作。可以使用list或vector实现。
stack核心接口:
push
压栈
top
返回栈顶元素,并不移除
pop
出栈 ,移除下一个元素,并不将它返回.
注:如果stack内没有元素,执行top pop会导致为定义的行为,要使用empty()或size()来检验是否为空。
stack运用实例:
//stack 栈 后进先出
stack<int> st;
st.push(1); //压栈
st.push(3);
st.push(8);
st.push(-10);
cout << "\nStack:";
while (!st.empty())
{
cout << st.top() << " "; //取栈顶元素
st.pop(); //出栈
}
(2) queue
队列 先进先出(FIFO), 头文件#include<queue>
queue内部也采用deque实现 支持front()
back()
push_back
pop_front()
操作的任何序列式容器都可以实现queue,如list。
queue接口:
push()
入队
front()
返回队首元素
pop
出队,移除元素
queue运用实例:
//queue 队列 先进先出
queue<int,list<int> > listQueue; //使用list实现queue
listQueue.push(1); //入队
listQueue.push(3);
listQueue.push(8);
listQueue.push(-10);
cout << "\nQueue:";
while (!listQueue.empty())
{
cout << listQueue.front() << " ";//取队首元素
listQueue.pop();//出队
}
(3) priority_queue 优先队列
优先级队列的元素根据优先级读取,即优先级队列的元素已按排序准则排序,缺省的排序准则operator<
.
template<class _Ty,
class _Container = vector<_Ty>,
class _Pr = less<typename _Container::value_type> >
class priority_queue
{ // priority queue
...
接口:
push
入队
top
取下一个元素
pop
出队,移除元素
Bitsets
bitset造出一个内含位(bits)或boolean值且大小固定的array。当需要管理各式标志(flags),并以标识的组合来表现变量时,就可以运用bitset。
头文件#include<bitset>
template<size_t _Bits>
class bitset
...
注:这里 template参数并不是一个型别,而是一个不带负号的整数。
运用实例:
enum Color{
red,
yellow,
green,
blue,
white,
black,
numColors
};
bitset<numColors> usedColors;
usedColors.set(red);//置位
usedColors.set(yellow);
cout << "\nbitfield: " << usedColors;
cout << "\nnumber of used colors: " << usedColors.count(); //返回"位值为1"的个数
cout << "\nbitfield of unused colors: " << ~usedColors;
if (usedColors.any()) //判断是否有任何位被值1
{
cout <<"\nuse colors!";
}
if (usedColors.test(red)) //判断该位是否被设立
{
cout << "\nuse red color!";
}
usedColors.set(); //所有位设为true
usedColors.reset(); //所有位设为false
STL学习笔记--特殊容器的更多相关文章
- STL学习笔记(一) 容器
0.前言随机访问迭代器: vector.string.dequeSTL的一个革命性的方面就是它的计算复杂性保证 条款01:慎重选择容器类型 c++提供的容器:标准STL序列容器:vector.stri ...
- STL学习笔记— —无序容器(Unordered Container)
简单介绍 在头文件<unordered_set>和<unordered_map> 中定义 namespace std { template <typename T, ty ...
- STL学习笔记--各种容器的运用时机
如何选择最佳的容器类别? 缺省情况下应该使用vector.vector的内部结构简单,并允许随机存取,所以数据的存取十分方便灵活,数据的处理也够快. 如果经常要在序列的头部和尾部安插和移除元素,应采用 ...
- Effective STL 学习笔记 32 ~ 33
Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 30: 保证目标区间足够大
Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
- Effective STL 学习笔记 Item 21:Comparison Function 相关
Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...
- Effective STL 学习笔记:19 ~ 20
Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
随机推荐
- Linux 下如何安装 .rpm 文件
执行以下命令安装: rpm -i your-file-name.rpm 详细的可参考: http://os.51cto.com/art/201001/177866.htm
- vue开发 - 将方法绑定到window对象,给app端调用
通过jsBridge方法,H5可以调用客户端(ios,android)的内部方法,同样,客户端也需要能调用H5页面里定义的js方法,但是在vue里,所有的方法都是在组件内部声明的,也只能在组件内部调用 ...
- 微信小游戏 交互接口的使用 wx.showToast wx.showLoading
在小游戏中,会有如下图的提示窗口,这些可以使用微信提供的交互接口实现. 使用loading等待的接口.mask=true表示遮罩,防止等待时点击其他按钮触发其他操作导致异常. wx.showLoadi ...
- s3cmd在配置后使用时提示ERROR: S3 error: 403 (InvalidAccessKeyId): The AWS Access Key Id you provided does not exist in our records.
自己新建的ceph环境,下载了s3cmd来做客户端,使用了s3cmd --configure配置后,在使用s3cmd ls可以查看到所有的bucket,但s3cmd ls s3://xxx 具体buc ...
- Listview多tab上滑悬浮
extends:http://blog.163.com/xueshanhaizi@126/blog/static/37250245201410541721892/ 1:近期要做一个含有两个tab切换页 ...
- C# XML对象序列化、反序列化
XML 序列化:可以将对象序列化为XML文件,或者将XML文件反序列化为对象还有种方法使用LINQ TO XML或者反序列化的方法从XML中读取数据. 最简单的方法就是.net framework提供 ...
- 把本地项目文件上传到github远程仓库的教程
参考廖雪峰的git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 非常详 ...
- Mergeable Stack 直接list内置函数。(152 - The 18th Zhejiang University Programming Contest Sponsored by TuSimple)
题意:模拟栈,正常pop,push,多一个merge A B 形象地说就是就是将栈B堆到栈A上. 题解:直接用list 的pop_back,push_back,splice 模拟, 坑:用splice ...
- GCD之各种派发
dispatch_apply的用法 并行模拟for循环,将指定的代码循环10次,一般会把这些代码附加到一个queue上,然后在 dispatch_apply里并行 dispatch_queue_t q ...
- WordCount优化
Github 地址:chaosrings/wcPro 1.PSP2.1表格 psp 2.1 psp阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这 ...