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

  • 相关阅读:
    List数组细解
    iOS之缓存
    Java_String的操作
    weak的理解
    Swift_单利
    Java 抽象类和接口
    Java 继承中的问题
    java 成员变量与局部变量
    纪中第十九天
    cin快读
  • 原文地址:https://www.cnblogs.com/chongjz/p/12797419.html
Copyright © 2011-2022 走看看