gpt4 book ai didi

c++ - 使用更大或更小翻转 map

转载 作者:行者123 更新时间:2023-11-30 02:52:35 33 4
gpt4 key购买 nike

我需要翻转 map (key => valuevalue => 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

最佳答案

几乎在你的最后一个代码片段中有了它,你只是忘记了使用你允许的比较模板类型。

template<typename A, typename B, typename Compare = less<A> >
map<B, A, Compare> flipMap(const map<A, B> &src)
{
map<B, A, Compare> dst;
transform(src.begin(), src.end(), inserter(dst, dst.begin()), flipPair<A, B>);

return dst;
}

关于c++ - 使用更大或更小翻转 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743896/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com