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