我们知道, 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




本文转载:CSDN博客