容器适配器
- 在顺序容器的基础上实现,屏蔽了顺序容器的一部分功能,突出或增加了另外一些功能;
- 共有成员函数:push,pop,top
- 没有迭代器,排序、查找、变序算法不适用
一、stack
1.先进后出,访问和删除只能针对栈顶元素,添加只能添到顶;相当于一个桶,只有一个出口
站内元素不能访问,只能将元素全部删除使之变成栈顶从可以
2.实现:默认用deque,也可以用vector list
3.成员函数:
- void pop()
- T & top()
- void push(const T & x)
- size()
- empty()
4.例:除k取余法
#include <iostream>
#include <stack>
using namespace std;
int main(){
int n,k;
stack<int> stk;
cin>>n>>k;
if(n==0){
cout<<0;
return 0;
}
while(n){
stk.push(n%k);
n/=k;
}
while(!stk.empty()){
cout<<stk.top();
stk.pop();
}
return 0;
}
二、queue
1.先进先出,队头的访问和删除操作只能在队头进行,添加只能在队尾;相当于一个双向开口的管
2.成员函数:和stack类似,不过push发生在队尾,pop和top发生在队头
3.实现:默认用deque,只能用deque或list
三、priority_queue
1.和queue区别:队头元素总是最大的,pop掉最大的元素,top返回最大元素的引用
2.实现:默认用vector,用堆排序技术,内部并非完全有序,只能确保最大的元素总在队头;适用于“不停在一堆元素中取走最大元素