key => value
マップを反転する必要があります ( value => key
)。ただし、昇順/降順でソートするオプションが必要です。
多かれ少なかれ使っていると思います!
例えば:map<int, int, greater<int> > map
Sorting std::map using valueの投稿に基づいて、部分的な解決策があります...
template<typename A, typename B>
pair<B, A> flipPair(const pair<A, B> &p) {
return pair<B,A>(p.second, p.first);
}
template<typename A, typename B>
map<B, A> flipMap(const map<A, B> &src) {
map<B, A> dst;
transform(src.begin(), src.end(), inserter(dst, dst.begin()), flipPair<A, B>);
return dst;
}
大きいか小さいかを選択する引数を追加する方法は?
私はこれを試しましたが、動作しません!!
template<typename A, typename B, typename Comp = less<A> >
map<B, A, Comp> flipMap(const map<A, B> &src) {
map<B, A, Comp> dst;
transform(src.begin(), src.end(), inserter(dst, dst.begin()), flipPair<A, B>);
return dst;
}
エラー:error: default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11