zoukankan      html  css  js  c++  java
  • vector中pair的排序方法

    直接上代码: 

    bool judge(const pair<int,char> a, const pair<int ,char> b) {
        return a.first<b.first;
    }
    int main()
    {
        vector<pair<int ,char>> p;
        p.push_back(make_pair(10,'a'));
        p.push_back(make_pair(9,'c'));
        p.push_back(make_pair(10,'t'));
        p.push_back(make_pair(17,'y'));
        p.push_back(make_pair(10,'b'));
        sort(p.begin(),p.end(),judge);
        for(auto i=0;i<p.size();i++)
            cout<<p[i].first<<"    "<<p[i].second<<endl;
        system("pause");
    }

    通过传递一个函数 judge 给sort函数 , 注意: judge 中return a<b; 决定为从小到大的排序

                               return a>b;  决定为从大到小的排序

    华为机试题:

    如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

    实现以下接口:
        输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
        按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
        清空目前的统计结果,重新统计
    调用者会保证:
    输入的字符串以‘’结尾。

    输入描述:

    输入一串字符。



    输出描述:

    对字符中的
    各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

    输入例子:
    aadddccddc
    
    输出例子:
    dca

    #include<iostream>
    #include<string>
    #include<vector>
    #include<algorithm>
    using namespace std;
    bool judge(const pair<char ,int> a,const pair<char ,int> b){
        if(a.second!=b.second) return a.second>b.second;
        else 
            return a.first < b.first;
    }
    int main()
    {
        string c;
        while(cin >> c){
            int len = c.size();
            vector<pair<char ,int>> re;
            for(int i=0;i<len;i++){
                int flag=0;
                int count=1;
                for(int j=0;j<i;j++){
                    if(c[i]==c[j]){
                    flag=1;break;}    
                }
                if(flag!=1){
                    for(int j=i+1;j<len;j++){
                        if(c[i]==c[j]) count++;
                    }
                    re.push_back(make_pair(c[i],count));
                }
            }
            sort(re.begin(),re.end(),judge);
            for(int i=0;i<re.size();i++){
                cout<<re[i].first;
            }
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    紫书 习题 11-15 UVa 1668 (图论构造法)
    紫书 习题 11-16 UVa 1669(树形dp)
    紫书 习题 11-12 UVa 1665 (并查集维护联通分量)
    紫书 习题 11-10 UVa 12264 (二分答案+最大流)
    紫书 习题 11-9 UVa 12549 (二分图最小点覆盖)
    紫书 例题 11-13 UVa 10735(混合图的欧拉回路)(最大流)
    欧拉回路模板
    架构设计:进程还是线程?是一个问题!(转载)
    JDK个目录,以及与环境变量的关系
    linux cat命令
  • 原文地址:https://www.cnblogs.com/NeilZhang/p/5565206.html
Copyright © 2011-2022 走看看