编程语言
首页 > 编程语言> > TZOJ 5370: C++实验:STL之priority_queue2 优先队列

TZOJ 5370: C++实验:STL之priority_queue2 优先队列

作者:互联网

描述

 

使用STL中的优先队列,将一个字符串中的各个字符按照ASCII从小到大顺序排列。

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

 

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

 

输入

 

输入数据有多组,第一行为n,接下来有n组,每组一个字符串(不含空格)。

 

输出

 

每组一行,输出一个字符串,字符串中的各个字符按照ASCII从小到大顺序排列。

 

样例输入

2
aed
abcdefg

样例输出

ade
abcdefg

AC感想:优先队列的自定义优先级很有用,bool operator ()(char x,char y)//自定义优先级 ,这一句要熟记,特别是operator;

priority_queue<char,vector<char>,cmp> qu;//定义方法
// 其中,第二个参数为容器类型。第三个参数为比较函数。使用了优先级后的定义队列格式也要熟悉

跟我背英语单词operator运算符函数、priority优先级

#include<bits/stdc++.h>
using namespace std;
struct cmp{
    bool operator ()(char x,char y)//自定义优先级 
    {
        return x>y;// '>'是由小到大,'<'是由大到小 ,小的优先级高 
    }
};
priority_queue<char,vector<char>,cmp> qu;//定义方法 
// 其中,第二个参数为容器类型。第三个参数为比较函数。
void Input()
{
    string s;
    cin>>s;
    for(int i=0;i<s.length();i++)
        qu.push(s[i]);
}
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        Input();
        while(!qu.empty())
        {
            cout<<qu.top();
            qu.pop();
        }
        cout<<endl;
    }
    return 0;
}

 

标签:qu,自定义,STL,queue2,5370,char,while,operator,优先级
来源: https://www.cnblogs.com/jyssh/p/16385890.html