#include #include #include #include #include using namespace std; // 升序 bool cmp(const pair<int,int> &p1,const pair<int,int> &p2)//要?常数,不然编译错误 { return p1.second<p2.second; } int main(void) { map<int,int> mp; mp[1]=4; mp[2]=3; mp[3]=2; mp[4]=1; vector<pair<int,int> > arr; for (map<int,int>::iterator it=mp.begin();it!=mp.end();++it) { cout<first<<‘\t’<second<<endl; arr.push_back(make_pair(it->first,it->second)); } cout <<endl; sort(arr.begin(),arr.end(),cmp); for (vector<pair<int,int> >::iterator it=arr.begin();it!=arr.end();++it) { cout<first<<‘\t’<second<<endl; } return 0; } 输出结果: 上述也可以通过lambda表达式表示如下: sort(map_b.begin(), map_b.end(), [](const pair<int, int> &x, const pair<int, int> &y) -> int { return x.second < y.second; });