我需要翻转地图(key => value
in value => key
)。但是,我希望选择按 asc/desc 顺序排序。
我认为在使用或多或少!
例如: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