#include<iostream>
#include<string>
#include<string.h>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
int cmp(const pair<string,time_t> &x,const pair<string,time_t> &y)
{
return x.second < y.second;
}
void sortMapbyValue(map<string,time_t> &t_map,vector< pair<string,time_t> > &t_vec)
{
for(map<string,time_t>::iterator iter = t_map.begin();iter != t_map.end(); iter ++)
{
t_vec.push_back(make_pair(iter->first,iter->second));
}
sort(t_vec.begin(),t_vec.end(),cmp);
}
int main(void)
{
map<string,time_t> m_result;
vector< pair<string,time_t> > v_result;
m_result.insert(pair<string,time_t>("abc",20.33));
m_result.insert(pair<string,time_t>("abd",22.33));
m_result.insert(pair<string,time_t>("abe",21.33));
m_result.insert(pair<string,time_t>("abf",19.33));
sortMapbyValue(m_result,v_result);
cout<<"sort by value :"<<endl<<endl;
for(int i=0; i<v_result.size(); i++)
{
cout<<v_result[i].first<<"\t\t"<<v_result[i].second<<endl;
}
}
思路:利用sort进行排序:1、定义一个自定义排序函数cmp,将map放入到vector中,再利用sort进行排序,最后vector将是有序的