C/C++教程

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

本文主要是介绍TZOJ 5370: C++实验:STL之priority_queue2 优先队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

描述

 

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

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

 

  • C++
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;
}

 

这篇关于TZOJ 5370: C++实验:STL之priority_queue2 优先队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!