标准库没有提供Map的Sort函数,事实上也不可以,因为这样造成不安全,通过以下方法可以间接的实现Map类型的按值排序。 typedef pair<string, int> PAIR; int cmp(const PAIR& x, const PAIR& y) { return x.second > y.second; } map<string,int> m; vector<PAIR> vec; for (map<wstring,int>::iterator curr = m.begin(); curr != m.end(); ++curr) { vec.push_back(make_pair(curr->first, curr->second)); } sort(vec.begin(), vec.end(), cmp);