首页 > 后端开发 > C++ > 如何按值而不是键对 std::map 进行排序?

如何按值而不是键对 std::map 进行排序?

Mary-Kate Olsen
发布: 2024-12-05 10:33:10
原创
691 人浏览过

How Can I Sort a std::map by Value, Not Key?

按值对 std::map 进行排序

按值对 std::map 进行排序需要使用标准 sort() 函数的替代方法仅按键对元素进行排序。要实现此目的,请考虑以下解决方案:

翻转键和值

使用以下命令创建一个新的多重映射,翻转原始映射的键和值对函数:

template<typename A, typename B>
std::multimap<B,A> flip_map(const std::map<A,B> &src)
{
    std::multimap<B,A> dst;
    std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), 
                   flip_pair<A,B>);
    return dst;
}
登录后复制

用法:

创建原始地图后(例如,std::map src),只需将地图翻转到按值排序:

std::multimap<double, int> dst = flip_map(src);
登录后复制

通用关联源

此解决方案可以推广到使用可变参数模板与任何关联容器一起使用:

template<typename A, typename B, template<class,class,class...> class M, class... Args>
std::multimap<B,A> flip_map(const M<A,B,Args...>&src)
{
    std::multimap<B,A> dst;
    std::transform(src.begin(), src.end(),
                   std::inserter(dst, dst.begin()),
                   flip_pair<A,B>);
    return dst;
}
登录后复制

这适用于 std::map 和 std::unordered_map 作为源翻盖的。

以上是如何按值而不是键对 std::map 进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板