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

priority_quEuE,C++的问题

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

prority_queue是STL里面的优先队列实现,既然是队列,就要push进pop出。使用data[i].pop()来弹出对应的元素。

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

利用函数对象,先定义priority_queue的排序规则, 可以继承binary_function并重写operator(),然后如你的程序所写就可以了, 程序如下: #include #include #include "point.h" #include using namespace std; class PointCmp : public binary_f...

template struct greater : public binary_function { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; } }; 上面是greater的定义,你注意里面用的是>符号,你的类型node必须支持符号>,所以你必须为你的node类型定...

priority_queue p;

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

#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; }

operator >这个是重载运算符,相当于定义了一个运算符>。 变量T&t1,是成员T的别名,t2类似

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

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