博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 学习笔记之——STL 库 queue
阅读量:6293 次
发布时间:2019-06-22

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

1. 队列

queue 队列是一种容器适配器,专门用来满足先进先出的操作,也就是元素在容器的一端插入并从另一端提取。

  • bool empty() const; 返回队列是否为空;
  • size_type size() const; 返回队列中元素的数量;
  • reference& back(); 返回队列中最后一个元素也即最新的元素的引用;
  • reference& front(); 返回队列中的下一个元素也即最旧的元素的引用;
  • void push (const value_type& val); 在队尾插入一个元素;
  • void pop(); 弹出队列的下一个元素也即最旧的元素,队头元素。

2. 优先级队列

优先级队列是一种容器适配器,根据一些严格的弱排序标准,专门设计使其第一个元素始终是它包含的最值元素。其本质上就是一个大顶堆或者小顶堆,会在需要时自动调用函数 make_heap,push_heap 和 pop_heap 自动完成堆化,比如插入新元素或者弹出堆顶元素。

  • bool empty() const; 返回优先级队列是否为空;
  • size_type size() const; 返回优先级队列中元素的数量;
  • const_reference top() const; 返回优先级队列的顶部元素,也即比较优先级最高的元素;
  • void push (const value_type& val); 在优先级队列中插入一个元素;
  • void pop(); 弹出优先级队列的顶部元素。

下面的例子中展示了构建优先级队列,将两个降序的 vector 合并成一个新的降序的 vector。

#include 
#include
#include
using namespace std;class mycomparison{ bool big_heap; // 大顶堆标志位,也就是所有元素比堆顶元素小public: mycomparison(const bool& param=true) {big_heap = param;} bool operator() (const vector
vec1, const vector
vec2) const { if (big_heap) return (vec1[0] < vec2[0]); else return (vec1[0] > vec2[0]); }};int main (){ vector
vec1; vec1.push_back(200); vec1.push_back(50); vec1.push_back(32); vector
vec2; vec2.push_back(100); vec2.push_back(96); vec2.push_back(20); vector
vec3; // priority_queue
, vector< vector
>, mycomparison> q(mycomparison(false)); // priority_queue
, vector< vector
>, mycomparison> q(false); priority_queue
, vector< vector
>, mycomparison> q; q.push(vec1); q.push(vec2); while (!q.empty()) { vector
temp = q.top(); q.pop(); vec3.push_back(temp[0]); temp.erase(temp.begin()); if (temp.size() != 0) q.push(temp); } for (vector
::iterator it = vec3.begin(); it != vec3.end(); it++) cout << *it << ' '; return 0;}

[参考资料 []](

获取更多精彩,请关注「seniusen」!

转载地址:http://zocta.baihongyu.com/

你可能感兴趣的文章
Skype For Business 2015实战系列6:后端数据库安装CU6补丁
查看>>
web安全之信息刺探防范(上)
查看>>
Oracle CRS的管理与维护
查看>>
开启Sharepoint 2013站点邮箱
查看>>
【VMCloud云平台】SCO(一)规划
查看>>
相对路径和绝对路径错误造成的漏洞
查看>>
元胞自动机:更接近人类思考的智能模型
查看>>
ISCSI网络存储
查看>>
开源跳板机(堡垒机)Jumpserver v0.2.0 使用说明
查看>>
第二组视频:MySQL复制
查看>>
不同系统查WWN号
查看>>
社交网络用户并非越多越好
查看>>
读于丹《趣品人生》有感
查看>>
俞敏洪:我让女儿主动学习的秘密
查看>>
Android应用程序组件Content Provider的启动过程源代码分析(1)
查看>>
分布式一致Hash算法
查看>>
版本服务器Svn部署与配置
查看>>
揪出MySQL延迟上千秒的元凶
查看>>
shell编程开发应用指南
查看>>
⑤Windows Server 8 RemoteFX体验
查看>>