1. 程式人生 > >map的按值排序 輸出出現次數最多的字串

map的按值排序 輸出出現次數最多的字串

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中的第一項
	//即為出現次數最多的字串
}