在STL中,map是按鍵來排序的,但很多時候需要按值來排序。一種方法是將map轉化為vector,然後排序。
tool.h
#ifndef TOOL_H<br />#define TOOL_H<br />#include <iostream><br />#include <vector><br />#include <map><br />#include <string><br />#include <algorithm><br />using namespace std;<br />void sortMapByValue(map<string,int>& tMap,vector<pair<string,int>>& tVector);<br />#endif
tool.cpp
#include "tool.h"<br />int cmp(const pair<string,int>& x,const pair<string,int>& y)<br />{<br />return x.second<y.second;<br />}<br />void sortMapByValue(map<string,int>& tMap,vector<pair<string,int>>& tVector)<br />{<br /> for(map<string,int>::iterator curr=tMap.begin();curr!=tMap.end();curr++)<br /> {<br />tVector.push_back(make_pair(curr->first,curr->second));<br /> }<br /> sort(tVector.begin(),tVector.end(),cmp);<br />}
main.cpp
#include "tool.h"<br />int main()<br />{<br /> map<string,int> tMap;<br /> tMap["你好"]=10;<br /> tMap["他好"]=5;<br /> tMap["我好"]=15;<br /> vector<pair<string,int>> tVector;<br /> sortMapByValue(tMap,tVector);<br /> for(int i=0;i<tVector.size();i++)<br /> {<br /> cout<<tVector[i].first<<": "<<tVector[i].second<<endl;<br /> }<br /> system("PAUSE");<br /> return 0;<br />}