博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL--容器适配器(queue、priority_queue、stack)
阅读量:5883 次
发布时间:2019-06-19

本文共 1574 字,大约阅读时间需要 5 分钟。

适配器(Adaptor)是提供接口映射的模板类。适配器基于其他类来实现新的功能,成员函数可以被添加、隐藏,也可合并以得到新的功能。

STL提供了三个容器适配器:queue、priority_queue、stack。

这些适配器都是包装了vector、list、deque中某个顺序容器的包装器。注意:适配器没有提供迭代器,也不能同时插入或删除多个元素。

本文地址:,转载请注明源地址。

队列(queue)

先进先出(FIFO)的数据结构

可供选择的容器只有deque和list。对大多数用途使用默认的deque。

1、要用到头文件#include<queue>

2、常用函数

  • queue<int> Q 声明一个int的空队列Q;
  • push() 将一个新元素接到队列的末端;
  • pop() 弹出队列中的第一个元素,返回的是一个void;
  • front() \ back() 存取队列中的第一个元素和最后一个元素,返回的是一个引用;
  • empty() 测试队列是否为空;
  • size() 获得队列中元素的个数;

堆栈(stack)

先进后出(FILO)的数据结构

可以使用三个标准顺序容器vector、deque、list中的任何一个作为stack的底层模型。

1、要用到头文件#include<stack>

2、常用函数

  • stack<int> Q 声明一个int的空栈Q;
  • push() 将一个新元素接到栈的末端;
  • pop() 弹出栈中的末端元素,返回的是一个void;
  • top() 存取栈中的最后一个元素,返回的是一个引用;
  • empty() 测试栈是否为空;
  • size() 获得栈中元素的个数;

<priority_queue> 内部实现: 堆

priority_queue<T, Sequence, Compare>

支持操作:

push() O(logn)

pop() O(logn)

top() O(1)存取队列中的第一个元素,与queue不同

See also: push_heap(), pop_heap() … in <algorithm>

priority_queue用法举例

#include 
#include
using namespace std;priority_queue
maxheap; //int最大堆 struct cmp{ bool operator()(int a,int b) {
return a > b;}};priority_queue
,cmp> minheap; //int最小堆

priority_queue的比较函数

优先级的比较函数,可以使用缺省默认,也可以重载自己编写的比较函数。

1) 假设优先队列中的元素为结构体,要对其中某个变量排序。此时可以在结构体中重载操作符:

priority_queue
, cmp> Q;struct cmp{ int seq; //重载运算符号 bool operator < (const Test &a) const { return seq < a.seq; // seq大的优先级高 }};

2)如果是根据与优先队列中某个元素相关的变量排序,且此变量不在结构体中,则可参考greater<int>() 的方式去重载(),具体做法如下:

priority_queue
, cmp> Q;struct cmp { bool operator()(int a, int b) { // d[a]小的优先级高 return d[a] > d[b]; }};
你可能感兴趣的文章
nodejs 安装 postgresql module
查看>>
Kth Largest Element in an Array - LeetCode
查看>>
GVIM设置背景颜色
查看>>
存储的瓶颈终篇(8)
查看>>
总部关于数据集成工程师的招聘要求
查看>>
[git]一个本地仓库,多个远程仓库
查看>>
POJO
查看>>
大数据分页实现与性能优化
查看>>
Vue --- :is
查看>>
VB.NET中图像处理的一些技巧以及其和C#图像处理的差距。
查看>>
CuteC Editor 更新发布
查看>>
浅谈JavaScript中的继承
查看>>
RxJava笔记
查看>>
How to change java version in Linux
查看>>
vi 使用
查看>>
[踩过的坑]Elasticsearch.Net 官网示例的坑
查看>>
[hiho]最大集合
查看>>
2. SQL 语法
查看>>
【转】iOS学习之iOS禁止Touch事件
查看>>
Asp.net MVC进入请求管道的过程
查看>>