マップを値でソートしようとしています。私はそれを行う方法についての研究を行い、次のコードで終わった。しかし、それはコンパイルされませんし、なぜ私は確信していません。関数を使用して値でマップをソートできないのはなぜですか?
#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