首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按值对unordered_map或map进行C++排序

在C++中,unordered_mapmap都是关联容器,用于存储键-值对。它们的区别在于底层实现和性能特点。unordered_map使用哈希表实现,插入、删除和查找的平均时间复杂度为常数级,不保证元素的顺序;而map使用红黑树实现,插入、删除和查找的平均时间复杂度为对数级,按键的大小进行排序。

要按值对unordered_mapmap进行排序,可以将其转换为一个vector,然后使用自定义的比较函数进行排序。以下是一个示例代码:

代码语言:txt
复制
#include <iostream>
#include <unordered_map>
#include <map>
#include <vector>
#include <algorithm>

// 自定义比较函数,按值从小到大排序
bool compare(const std::pair<int, int>& a, const std::pair<int, int>& b) {
    return a.second < b.second;
}

int main() {
    std::unordered_map<int, int> unorderedMap = {{3, 30}, {1, 10}, {4, 40}, {2, 20}};
    std::map<int, int> map = {{3, 30}, {1, 10}, {4, 40}, {2, 20}};

    // 将unordered_map转换为vector
    std::vector<std::pair<int, int>> vecUnorderedMap(unorderedMap.begin(), unorderedMap.end());
    // 按值排序
    std::sort(vecUnorderedMap.begin(), vecUnorderedMap.end(), compare);

    // 将map转换为vector
    std::vector<std::pair<int, int>> vecMap(map.begin(), map.end());
    // 按值排序
    std::sort(vecMap.begin(), vecMap.end(), compare);

    // 输出排序后的结果
    std::cout << "排序后的unordered_map:" << std::endl;
    for (const auto& pair : vecUnorderedMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    std::cout << "排序后的map:" << std::endl;
    for (const auto& pair : vecMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

上述代码中,我们定义了一个自定义比较函数compare,用于按值进行排序。然后,我们将unordered_mapmap转换为vector,并使用std::sort函数进行排序。最后,我们通过遍历输出排序后的结果。

请注意,以上示例中没有提及任何云计算品牌商的相关产品。如需了解相关云计算产品和服务,建议访问腾讯云官方网站(https://cloud.tencent.com/)以获取更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分32秒

073.go切片的sort包

6分33秒

088.sync.Map的比较相关方法

5分8秒

084.go的map定义

2分25秒

090.sync.Map的Swap方法

领券