map的按值排序 輸出出現次數最多的字串
阿新 • • 發佈:2018-11-16
using namespace std; typedef pair<string, int>Pair; bool cmp(const Pair&a, const Pair&b) { return a.second > b.second;//大頂 } int main() { int n; while (~scanf("%d", &n) && n) { vector<Pair>PairVec; map<string, int>m; for (int i = 0;i < n;i++) { string c; cin >> c;++m[c];//插入鍵 值預設為0(作為計數器) } for (map<string, int>::iterator it = m.begin();it != m.end();++it) { PairVec.push_back(make_pair(it->first, it->second)); } sort(PairVec.begin(), PairVec.end(), cmp); cout << PairVec.front().first << endl; } //此處map是按照鍵string排序(字典序) 無法直接對map操作來完成按值排序 //完成此操作需要把map的每個元素make_pair然後壓入vector //通過對pair<string,int>的cmp函式完成按值排序,然後輸出vector中的第一項 //即為出現次數最多的字串 }