题记:
可能项目中会要用到“priority_queue”,提前预习啦~实践中出真知,见下面的代码:
代码
// priority_queue.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <queue>
using namespace std;
class Node {
private:
unsigned int priority_;
int data_;
public:
Node(unsigned int p, int d) {
priority_ = p;
data_ = d;
}
unsigned int priority() const {
return priority_;
}
int data() const {
return data_;
}
};
class cmp {
public://注意1.必须是public,否则STL没法用这个规则
bool operator()(const Node &t1, const Node &t2)
{
return t1.priority() < t2.priority();
}
//注意2
//用法
//cmp c;
//cout << c(t1, t3) << endl;
};
int _tmain(int argc, _TCHAR* argv[])
{
Node t1(5,5), t2(3, 3), t3(7, 7);
priority_queue<Node, vector<Node>, cmp> Q;
Q.push(t1);
Q.push(t2);
Q.push(t3);
while (!Q.empty()) {
cout << Q.top().data() << endl;
Q.pop();
}
cmp c;
cout << c(t1, t3) << endl;
return 0;
}
解释:
1,我在Node中定义了优先级,priority_。呵呵~这种写法是模仿我们公司的高手啦~~
2,priority_queue中,cmp是定义了优先级。
3,注意输出结果啊。
有什么问题,留言啊。