priority_queue

using namespace std;

struct Node {
int x;
int y;
Node(int xx, int yy) : x(xx), y(yy) {}
// priority_queue默认大根堆,采用less,与map从小到大不一样;优先队列默认按照最大优先级,所以需要重构<
// 该例子,按照X从大到小排序,如果x相同,则按照y从小到大排列
bool operator < (const Node &b) const
{
if (x == b.x) {
return y > b.y; // 以b为对象,从小到大;
}
return x < b.x; // 以b为对象,顺着从大到小;
}
};

int main()
{
priority_queue que;
Node node1 = {1, 5};
Node node2 = {1, 2};
Node node3 = {3, 6};
que.push(node1);
que.push(node2);
que.push(node3);

while (que.empty() != true) {
    cout<

}

你可能感兴趣的:(priority_queue)