我想按值排序地圖。我做了一個關於如何去做的研究,最終得到了下面的代碼。但是,它不會編譯,我不知道爲什麼。爲什麼我不能使用函數對值進行排序?
#include <iostream>
#include <map>
#include <algorithm>
#include <iterator>
using namespace std;
bool cmp(pair<int,int> const & a, pair<int,int> const & b)
{
return a.second != b.second? a.second < b.second : a.first < b.first;
}
int main()
{
map<int,int>myMap;
for(int i=0,j=10;i<10;i++,j--)
{
myMap.emplace(i,j);
}
for(map<int,int>::iterator it=myMap.begin();it!=myMap.end();it++)
{
cout << it->first << " " << it->second << endl;
}
sort(myMap.begin(),myMap.end(),cmp);
for(map<int,int>::iterator it=myMap.begin();it!=myMap.end();it++)
{
cout << it->first << " " << it->second << endl;
}
return 0;
}
請與我們分享編譯錯誤。 –
這很長,但確定。讓我添加它。編輯:它讓我補充一些細節,因爲我的文章主要是代碼。這沒有意義。 @RichardCritten – zeke
'std :: map'總是按鍵排序。你需要首先轉換成對列表然後排序列表 – myaut