天天看點

map如何按value來排序------用帶pair的vector吧

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

繼續閱讀