#include <list>
#include <queue>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
class T
{
public:
T(int arg1,int arg2, string arg3):a(arg1),b(arg2),name(arg3) {}
int geta() const { return a; }
int getb() const { return b; }
const string& getname() const { return name; }
friend bool operator<(const T&t1, const T&t2);
friend ostream& operator<<(ostream& os, const T& t);
private:
int a;
int b;
string name;
};
ostream& operator<<(ostream& os, const T& t)
{
os << t.getname() << ' ' << t.geta() + t.getb();
return os;
}
bool operator<(const T& t1, const T& t2)
{
return (t1.geta()+t1.getb())<(t2.geta()+t2.getb());
}
int main()
{
priority_queue<T> q;
q.push(T(1,0,"t1"));
q.push(T(4,2,"t2"));
q.push(T(0,1,"t3"));
q.push(T(4,1,"t4"));
cout << q.top() << endl;
q.pop();
cout << q.top() << endl;
q.pop();
cout << q.top() << endl;
q.pop();
cout << q.top() << endl;
q.pop();
return 0;
}
Dec 19, 2010
STL queue 优先队列
创建自定义类型,存入优先队列
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment