容器配接器

(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学习笔记--特殊容器的更多相关文章

  1. STL学习笔记(一) 容器

    0.前言随机访问迭代器: vector.string.dequeSTL的一个革命性的方面就是它的计算复杂性保证 条款01:慎重选择容器类型 c++提供的容器:标准STL序列容器:vector.stri ...

  2. STL学习笔记— —无序容器(Unordered Container)

    简单介绍 在头文件<unordered_set>和<unordered_map> 中定义 namespace std { template <typename T, ty ...

  3. STL学习笔记--各种容器的运用时机

    如何选择最佳的容器类别? 缺省情况下应该使用vector.vector的内部结构简单,并允许随机存取,所以数据的存取十分方便灵活,数据的处理也够快. 如果经常要在序列的头部和尾部安插和移除元素,应采用 ...

  4. Effective STL 学习笔记 32 ~ 33

    Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  5. Effective STL 学习笔记 31:排序算法

    Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  6. Effective STL 学习笔记 Item 30: 保证目标区间足够大

    Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...

  7. Effective STL 学习笔记: Item 22 ~ 24

    Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...

  8. Effective STL 学习笔记 Item 21:Comparison Function 相关

    Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...

  9. Effective STL 学习笔记:19 ~ 20

    Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

随机推荐

  1. 【Spring系列】Spring IoC

    前言 IoC其实有两种方式,一种是DI,而另一种是DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其他组件被IOc容器注入,而后者是当前软件实体主动去某个服务 ...

  2. stopImmediatePropagation和stopPropagation (事件、防止侦听)

    参考: ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始 actionscript宝典 一.事件模型 egret中的事件模型和flash是一样的,但 ...

  3. python--利用列表推导式快速生成xml格式数据

    在接口自动化测试中,我们经常将要发送的数据放到excel里. json数据放至excel方便,但最近的一个测试,数据是xml格式发送的 如下: 属性 必选/可选 描述 1. Message Eleme ...

  4. 玩node-images模块---Node.js轻量级跨平台图像编解码库

    Node.js轻量级跨平台图像编解码库 github:https://github.com/zhangyuanwei/node-images Features 功能特性 轻量级:无需安装任何图像处理库 ...

  5. jfinal如何查看post还是get请求?

    jfinal如何查看post还是get请求? controller里面getRequest().getMethod()就行了. 值为 'GET' 或者 'POST'

  6. Freetds 连接数据库问题

    今天一个项目,需要用到连接SQLSERVER数据库,获取数据,按照以往的做法 ,安装了LNMP,装完之后在安装Freetds,然后在独立添加PHP的MSSQL的模块,./configure  make ...

  7. Python 基础知识(一)

    1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

  8. zero-shor learning 数据集

    OSR数据集下载地址: http://people.csail.mit.edu/torralba/code/spatialenvelope/ Relative Attributes Marr Priz ...

  9. Fata7y Ya Warda! SPOJ - DRUIDEOI 单调栈

    题意:1e5个数围成一个环.现在要输出每个数左右第一个大于它的数的下标.若没有,则输出-1. 题解:单调栈板题.只是要把数据压入栈压两遍来模仿环.    具体分析:考虑一个递减的数列.要找左边最大的 ...

  10. arcgis server multipoint 服务 applyedit功能

    首先打开arcmap,在catalog中新建 File GDB 在File GDB 中新建 Feature Class 类型选择 Multipoint 选择坐标 此时图层列表中有了新建的要素,点击Ed ...