jjdf.net
当前位置:首页 >> priority_quEuE,C++的问题 >>

priority_quEuE,C++的问题

struct cmp {bool operator()(node* a, node* b){ // 你自己定义的比较方法}};然后把 priority_queue 换成 priority_queue 大概就行了(std::vector 是 priority_queue 底层使用的容器)

一般“>>”符号不是在 cin 后面吗,会引起误解 不过最新的c++11标准允许了这种写法,你的编译器设置可能不支持c++11

greater需要的不是node类定义了>运算符么,与()有什么关系……

priority_queue是一个顺序容器适配器,其原型: template class priority_queue; 可见第二个vector是其Container,即优先队列的基础容器是vector,优先队列在vector这一容器类型基础上实现。

priority_queue p;

自己写一个比较器,比如: class mycomp { bool operator() (struct s1, struct s2) { return s1.x < s2.x; } };

#include #include #include #include #include #include #include #include #include using namespace std; template class A { T k; public: A():k(0){} A(T a):k(a){} bool operator a; a.push( 12 ); return 0; }

priority_queue是一个优先级队列,multiset是一个允许重复值的set,那区别很大啊 比如说队列是线性的,set一般是非线性的 在说成员方法也不同啊⋯⋯

假设优先队列q中已有元素,并且元素是按从小到大排列的。 首先定义一个 优先队列p; while ( !q.empty() ) { e = q.top( ); q.pop( ); 输出e; p.push( e ); } while ( !p.empty() ) { e = p.top( ); p.pop( ); q.push( ); }

网站首页 | 网站地图
All rights reserved Powered by www.jjdf.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com