容器适配器

可以用某种顺序容器来实现
(让已有的顺序容器以栈/队列的方式工作)

  1. stack: 头文件
    • 栈 – 后进先出
  2. queue: 头文件
    • 队列 – 先进先出
  3. priority_queue: 头文件
    • 优先级队列 – 最高优先级元素总是第一个出列

都有3个成员函数:
• push: 添加一个元素;
• top: 返回栈顶部或队头元素的引用
• pop: 删除一个元素

容器适配器上没有迭代器
 STL中各种排序, 查找, 变序等算法都不适合容器适配器

stack

stack 是后进先出的数据结构
只能插入, 删除, 访问栈顶的元素
可用 vector, list, deque来实现
• 缺省情况下, 用deque实现
• 用 vector和deque实现, 比用list实现性能好

template<class T, class Cont = deque<T> >
class stack {}; 

stack 中主要的三个成员函数:
• void push(const T & x);
将x压入栈顶
• void pop();
弹出(即删除)栈顶元素
• T & top();
返回栈顶元素的引用. 通过该函数, 可以读取栈顶
元素的值, 也可以修改栈顶元素

queue

和stack 基本类似, 可以用 list和deque实现
缺省情况下用deque实现

template<class T, class Cont = deque<T> >
class queue {
……
};

同样也有push, pop, top函数
• push发生在队尾
• pop, top发生在队头, 先进先出

priority_queue

和 queue类似, 可以用vector和deque实现
缺省情况下用vector实现
priority_queue 通常用堆排序技术实现, 保证最大的元
素总是在最前面
• 执行pop操作时, 删除的是最大的元素
• 执行top操作时, 返回的是最大元素的引用
默认的元素比较器是 less

#include <queue>
#include <iostream
>
using namespace std
;
int main() {
priority_queue<double> priorities;
priorities.push(3.2);
priorities.push(9.8);
priorities.push(5.4);
while( !priorities.empty() ) {
cout << priorities.top() << " ";
priorities.pop();
}
return 0;
} //输出结果: 9.8 5.4 3.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值