容器适配器

标准库提供了三种顺序容器适配器:queue、priority_queue和stack。

适配器的理解:使一种事物的行为类似于另一个事物的行为的一种机制。

适配器通用的操作和类型
size_type 足以存储此适配器类型最大对象的长度
value_type 元素类型
container_type 基础容器的类型,适配器在此容器类型上实现
A  a; 创建一个新的空适配器,命名为a
A  a(c); 创建一个名为a的新适配器,初始化为容器c的副本
关系操作符 适配器支持:==等

#indude<stack> //
#include<queue> //both  queue and priority_queue adaptors


适配器的初始化
stack<int>  stk(deq);

注意:

对于给定的适配器,其关联必须满足一定的约束条件

stack适配器:可以是任意一种顺序容器类型

queue适配器:要求其关联的基础容器必须提供push_front()运算,所以只能建在list容器上

priority_queue:适配器要求提供随机访问功能,可以建立在vector或deque上


栈适配器

栈容器适配器支持的操作
s.empty(); 空返回true
s.size(); 返回栈中元素的个数
s.pop(); 删除栈顶元素,但不返回其值
s.top(); 返回栈顶元素,但不删除其值
s.push(item); 在栈顶压入新元素

<span style="font-size:10px;">const stack<int>::size_type stk_size = 10;
stack<int>  intStack;

int ix = 0;
while(intStack.size() != stk_size)
	intStack.push(ix++);
int error_cnt = 0;
while(intStack.empty() == FALSE){
	int value = intStack.top();
	if(value != --ix){      //与前面的ix++呼应,这里--ix
		cerr<<"oops! expected "<<ix<<" received "<<value<<endl;
		++error_cnt;
	}
	intStack.pop();
}</span><span style="color:#ff0000;font-size:14px; font-weight: bold;">
</span>


队列和优先级队列支持的操作
q.empty() 队列空,返回true
q.size() 返回队列中元素的个数
q.pop() 删除队首元素,但不返回该元素
q.front() 返回队首元素,但不删除(使用于队列)
q.back() 返回队尾元素,但不删除 (使用于队列)
q.top() 返回最高优先级的元素值,但不删除该元素
q.push(item) 对于queue,在队尾压入一个新元素;对于priority_queue,在基于优先级的适当位置插入新元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值