STL之priority_queue3

Posted 极限之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL之priority_queue3相关的知识,希望对你有一定的参考价值。

描述

使用STL中的优先队列,将n个点按照横坐标从小到大顺序排序,如果横坐标相同,按照纵坐标从小到大排序。

部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

 

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        Input();
        while(!qu.empty())
        {
            Point p = qu.top();
            cout<<p.x<<" "<<p.y<<endl;
            qu.pop();
        }
    }
    return 0;
}

输入

输入数据有多组,第一行为t,接下来有t组数据。

每组的第一行为正整数n,接下来有n行,每行一个点,包含横坐标和纵坐标,均为整数。

输出

每组输出排序后的所有点,每行一个点。

样例输入

 2
3
3 2
2 3
4 1
4
1 2
3 3
1 1
3 2

样例输出

2 3
3 2
4 1
1 1
1 2
3 2
3 3

#include <iostream>
#include <queue>
#include <vector>
#include <functional>
#include <deque>
using namespace std;
typedef  struct Point {
    int x;
    int y;
    bool operator>(const Point &p) const
    {
        if(x!=p.x)
        return x>p.x;
        return y>p.y;
    }
}Point;
priority_queue< Point,vector<Point>,greater<Point> > qu;
void Input()
{
    Point p;
    int n;
    cin>>n;
    while(n--)
    {
        cin>>p.x>>p.y;
        qu.push(p);
    }    
}
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        Input();
        while(!qu.empty())
        {
            Point p = qu.top();
            cout<<p.x<<" "<<p.y<<endl;
            qu.pop();
        }
    }
    return 0;
}

 

 

以上是关于STL之priority_queue3的主要内容,如果未能解决你的问题,请参考以下文章

STL之priority_queue2

C++从青铜到王者第十六篇:STL之priority_queue类的初识和模拟实现

C++ STL之priority_queue

STL源码分析之heap和priority_queue

STL之优先级队列priority_queue

STL之容器适配器priority_queue