STL之queue和stack容器

转载:http://hi.baidu.com/hj11yc/item/f401323edee805f7de222183

模版类stack,它是一个后进现出的容器适配器--即自己不直接维护被控序列的模版类,而是它存储的容器对象来为它实现所有的功能;

typedef stack<T,deque<T,allocator<T>>> mycont;

默认的参数中容器是用deque实现的;被包含的容器要满足提供value_type,size_type,empt,size, push_back,pop_back;可选择的容器有list,deque,vector;要求有最快的平均访问速度,而且大概的容量要求也清楚(比较 衡定),那么,使用vector是个不错的选择 要求每次的访问时间平稳,而不在乎平均访问时间时,那么,可以考虑使用list;所以,库默认的deque是个不错的选择,它介于vector和list 之间,并且很好的综合了两者的优势;

构造函数:

stack() 声明一个空栈;

stack(mycont) 声明一个初始内容复制自mycont的栈;

函数:

push 将一个新元素压倒栈中;

pop 弹出栈中的元素,如果栈为空,结果未定义,函数返回void;

top 存取栈的顶端元素,如果栈为空,结果未定义,返回的是一个引用;

empty 测试栈是否为空;

size 获得栈中元素的个数;

常用的六个比较函数;

queue和priority_queue都是容器适配器,queue实现的是先进现出一个队列,priority_queue也是一个队列不过该 模版类可以保证每次通过pop从它里面取得的元素都是剩下元素中优先级最高的,在每次通过push添加元素时,整个序列都会在必要时进行重排,它使用堆算 法保持序列的有序化。

typedef queue<T,deque<T,allocator<T>>> mycont;

构造函数:

queue() 声明一个空队列;

queue(mycont) 声明一个队列它的初始内容复制自mycont;

push 将一个新元素接到队列的末端;

pop 弹出队列中的第一个元素,返回的是一个void;

front  存取队列中的第一个元素,返回的是一个引用;

back 存取队列中最后一个元素,返回的是一个引用;

empty 测试队列是否为空;

size 获得队列中元素的个数;

常见的六种比较操作;

typedef priority_queue<T,vector<T,allocator<T>>,less<T>>mycont;

构造函数:

priority_queue() 声明一个按pred()排序的空优先队列;

priority_queue(pr) 声明一个按函数对象pr排序的空优先队列;

priority_queue(pr,mycont), 声明一个按pr排序的优先队列,它的初始内容是从mycont中复制过来并排序的;

priority_queue(first,last) 声明一个按pred()排序的优先队列,初始内容从指定序列中复制过来的;

priority_queue(first,last,pr) 声明一个按pr排序的优先队列,它的初始内容是从指定的序列中复制过来并排序的;

priority_queue(first,last,mycont,pr) 声明一个按pr排序的优先队列,它的初始内容复制从mycont中指定的段并排序;

push 向优先队列中压入一个新元素;

pop 从优先队列中弹出它的顶端元素,返回值是void;

top 存取优先队列中顶端的元素,返回的是一个常量的引用;

empty size 测试优先队列是否为空;获得优先队列中元素的个数;

常用的六种比较操作;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值