在STL中,map是按键来排序的,但很多时候需要按值来排序。一种方法是将map转化为vector,然后排序。
tool.h
view plaincopy to clipboardprint?
- #ifndef TOOL_H
- #define TOOL_H
- #include
- #include
- #include
- #include
- #include
- using namespace std;
- void sortMapByValue(map& tMap,vector>& tVector);
- #endif
tool.cpp
view plaincopy to clipboardprint?
- #include "tool.h"
- int cmp(const pair& x,const pair& y)
- {
- return x.second
- }
- void sortMapByValue(map& tMap,vector>& tVector)
- {
- for(map::iterator curr=tMap.begin();curr!=tMap.end();curr++)
- {
- tVector.push_back(make_pair(curr->first,curr->second));
- }
- sort(tVector.begin(),tVector.end(),cmp);
- }
main.cpp
view plaincopy to clipboardprint?
- #include "tool.h"
- int main()
- {
- map tMap;
- tMap["你好"]=10;
- tMap["他好"]=5;
- tMap["我好"]=15;
- vector> tVector;
- sortMapByValue(tMap,tVector);
- for(int i=0;i
- {
- cout<<<": "<<
- }
- system("PAUSE");
- return 0;
- }
来自:
http://blog.csdn.net/andyelvis/archive/2009/07/19/4361962.aspx