标准库提供了三种顺序容器适配器: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,在基于优先级的适当位置插入新元素 |