C++ map按key或按value排序


map按key排序

(1)map默認按照 key 從小到大排序

map<string,int> hash;
//等價於 map<string,int, less<string>> hash;

(2)map按照 key 從大到小排序

map<string,int, greater<string> > hash;

map按value值排序

按 value 值排序沒有直接的方法,但我們可以把 map 存到 vector 中,再對 vector 進行自定義排序

  1. 重寫 vector 的 cmp 函數
bool cmp(pair<string,int> a, pair<string, int> b) {
    return a.second < b.second;//從小到大排序
}
  1. 把 map 存到 vector 中進行排序
  map<string,int> m;
    m["a"] = 2;
    m["b"] = 3;
    m["c"] = 1;
    vector<pair<string,int> > vec(m.begin(),m.end());
    /*
     *vec(m.begin(),m.end()代表用map的所有元素創建vector
     */
    sort(vec.begin(),vec.end(),cmp);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM