#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <queue>
#include <vector>
using namespace std;
class myClass
{
public:
myClass()
{
cout<<"myClass()"<<endl;
}
~myClass()
{
cout<<"~myClass()"<<endl;
}
};
typedef struct
{
int m;
int n;
} mystruct;
bool operator > (const mystruct &m1,const mystruct &m2)
{
return m1.m > m2.m;
}
priority_queue<mystruct,vector<mystruct> ,std::greater<mystruct> > myPq;
int _tmain(int argc, _TCHAR* argv[])
{
mystruct m1;
m1.m=10;
mystruct m2;
m2.m=20;
myPq.push(m1);
myPq.push(m2);
while(!myPq.empty())
{
cout<< myPq.top().m <<endl;
myPq.pop();
}
return 0;
}
使用
priority_queue 队列,按照你定的关键字进行排序。
template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue;
通过定义可以知道,把你的数据放到了自定的容器中,需要注意的
class Container = vector<T> 默认的这种容器,选择其他容器要谨慎,
如果按照自己的容器来排序,那么就要重载
operator > 操作符。