zoukankan      html  css  js  c++  java
  • map按照value排序

    map中的记录按照value排序

    map默认是按key值从小到大排序的,要改为按value排序。
    基本思路就是:想直接用sort排序是做不到的,sort只支持数组、vector等的排序。
    所以可以先把map装进pair里,然后再放入vector,自定义sort实现排序。

    #include<iostream>
    #include<algorithm>
    #include<map>
    #include<vector>
    using namespace std;
    
    map<int, int> myMap;
    map<int, int>::iterator map_iter;//map迭代器
    
    vector<pair<int, int>> vec;
    vector<pair<int, int>>::iterator vec_iter;//vector迭代器 
    
    bool cmp(pair<int, int> a, pair<int, int> b)
    {
        //'<'按照value从小到大排,'>'是从大到小 
        return a.second < b.second;
    }
    
    int main()
    {
        myMap[0] = 888888;
        myMap[1] = 11;
        myMap[2] = 2222;
        myMap[3] = 333;
        myMap[4] = 4;
    
        
        for(map_iter=myMap.begin(); map_iter!=myMap.end(); map_iter++)
        {
            //将map中记录push到vector中 
            vec.push_back(pair<int, int> (map_iter->first, map_iter->second));
            
            //输出默认序列(按key默认排序) 
            cout<<map_iter->first<<"  "<<map_iter->second<<endl;
        }
        
        puts("-----------------排序后----------------");
        
        sort(vec.begin(), vec.end(), cmp);//按照cmp中要求排序 
        
        for(vec_iter=vec.begin(); vec_iter!=vec.end(); vec_iter++)
        {
            //输出按value排序后的序列
            cout<<vec_iter->first<<"  "<<vec_iter->second<<endl;
        }
        return 0;
    }

    输出结果:

    C++11

  • 相关阅读:
    植物大战僵尸智慧树和金币的简单破解(二)
    植物大战僵尸任意阳光的简单破解(一)
    Bash漏洞分析
    树莓派4 安装vim8.2 编译python3支持
    JAVA实现剑指offer 大神博主网址
    IO流+集合完成功能
    Java学习IO流处理
    Java中拷贝图片IO流
    Java学习list集合练习二
    java学习list集合训练
  • 原文地址:https://www.cnblogs.com/chongjz/p/12797419.html
Copyright © 2011-2022 走看看