回覆列表
  • 1 # 使用者7063786766555

    map按值排序

    map的兩個值分別為key值和value值,map是按照key值進行排序的,無法直接對value排序。可以將map的key和value組成一個新的結構PAIR,用一個PAIR型的vector儲存map中的所有內容,對vecor按照value值進行排序。按順序輸出key。

    //map按值排序

    #include <iostream>

    #include <string>

    #include <vector>

    #include <map>

    #include <algorithm>

    using namespace std;

    typedef pair<string, int> PAIR;

    int cmp(const PAIR& x, const PAIR& y)//針對PAIR的比較函式

    {

    return x.second > y.second; //從大到小

    }

    int main() {

    map<string,int> nmap;

    nmap["LiMin"] = 90;

    nmap["ZiLinMi"] = 79;

    nmap["BoB"] = 92;

    nmap.insert(make_pair("Bing",99));

    nmap.insert(make_pair("Albert",86));

    //把map中元素轉存到vector中

    vector<PAIR> vec(nmap.begin(),nmap.end());

    sort(vec.begin(), vec.end(), cmp); //排序

    for (size_t i = 0; i != vec.size(); ++i) { //輸出

    cout << vec[i].first <<" "<<vec[i].second<<endl;

    }

    return 0;

    }

  • 中秋節和大豐收的關聯?
  • 小提琴的音柱倒了,怎麼辦?