C++使用priority_queue方法
2016-01-23 16:21
267 查看
优先队列是一种容器适配器,根据一种严格的排序标准,它的第一个元素一般是在它所包含的元素中最大的。
这种情况类似于一个堆,元素可以随时插入,只能堆中最大的元素才能被检索到(那个在优先队列顶部的元素)。
优先队列是作为容器适配器,实现使用一个特定的容器类的封装对象作为它的底层容器,提供一组特定的成员函数来访问它的元素。元素出现的“返回”特定的容器,这被称为优先队列的顶部。
Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.
STL里面容器默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数 缺省的话,优先队列就是大顶堆,队头元素最大。
这种情况类似于一个堆,元素可以随时插入,只能堆中最大的元素才能被检索到(那个在优先队列顶部的元素)。
优先队列是作为容器适配器,实现使用一个特定的容器类的封装对象作为它的底层容器,提供一组特定的成员函数来访问它的元素。元素出现的“返回”特定的容器,这被称为优先队列的顶部。
Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.
STL里面容器默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数 缺省的话,优先队列就是大顶堆,队头元素最大。
void test(){ struct BBC { int a, b, c; BBC(int x, int y, int z) :a(x), b(y), c(z){} bool operator<(const BBC &nyt)const{ return b < nyt.b; } }; int p[7] = { 2, 7, 13, 19,1,14,9}; int n = 7,N=6; priority_queue<BBC> q; for (int j = 0; j < n; ++j){ q.push(BBC(0, p[j], p[j])); } for (int i = 0; i < N; ++i){ cout << q.top().b << " "; q.pop(); } cout << endl; }
相关文章推荐
- c++
- 机器学习:概念学习FIND-S算法C++实现
- C++ inline 内联函数
- Visual C++在虚继承中使用协变报错
- Text reverse文字倒转
- effective c++笔记
- C++ vector 容器使用
- c++快速排序
- C语言 生成随机数
- c/c++中的sort()与qsort()用法
- 学习笔记--内核中C语言和汇编的使用
- 2413: C语言习题 折半查找
- live555ProxyServer.cpp分析:初始化流程
- C++ typedef typename 作用
- c++冒泡排序算法
- c语言递归调用:买啤酒
- 按位dp初步
- x265-1.7版本-encoder/weightPrediction.cpp注释
- 「C语言」「概念」数据类型及混合运算与类型转换
- C++ 在.h文件中包含头文件和在.cpp文件中包含头文件有什么区别?