我们知道, map是按照key来排序的, 那么, map如何按value来排序呢?------用带pair的vector吧。 看代码, 不说话:
#include <iostream>
#include <string>
#include <utility> // pair
#include <vector>
#include <algorithm>
using namespace std;
bool comp(const pair<int, string> &a, const pair<int, string> &b)
{
   return a.second < b.second;
}
int main()
{
   using namespace std;
   vector<pair<int, string> > vec;
   vec.push_back(make_pair<int, string>(15, "def"));
   vec.push_back(make_pair<int, string>(14, "abcd"));
   vec.push_back(make_pair<int, string>(16, "abc"));
   sort(vec.begin(), vec.end(), comp);
   vector<pair<int, string> >::iterator it;
   for(it = vec.begin(); it != vec.end(); ++it)
   {
      cout << it->second << endl;
   }
   return 0;  
}       结果: 
abc
 abcd
 def