c++ map和unorder_map 的区别
Published on 2022-11-17 23:02 in 暂未分类 with 林动

c++ map和unorder_map 的区别

    map:

    实现是红黑树,map内部所有的数据都是有序的,map的查询、插入、删除操作的时间复杂度都是O(logn)
    map的key需要定义operator <,对于一般的数据类型已被系统实现,若是用户自定义的数据类型,则要重新定义该操作符。

    unorder_map

    实现是哈希表无序,插入,查找:时间复杂度为O(1) **unordered_map的key需要定义hash_value函数并且重载operator ==。**对于一般的数据类型已被系统实现,若是用户自定义的数据类型,则要重新定义该操作符。

    如果key没实现以上两个编译就会出现错误:

    use of deleted function 'std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map() [with _Key = std::vector<int>; _Tp = int; _Hash = 
    std::hash<std::vector<int> >; _Pred = std::equal_to<std::vector<int> >; _Alloc = std::allocator<std::pair<const std::vector<int>, int> >]'
    

    哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,时间复杂度为O(1); 而代价仅仅是消耗比较多的内存。哈希表的查询时间虽然是O(1),但是并不是unordered_map查询时间一定比map短,因为实际情况中还要考虑到数据量,而且unordered_map的hash函数的构造速度也没那么快,所以不能一概而论,应该具体情况具体分析

    posted @   林动  阅读(168)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 震惊!C++程序真的从main开始吗?99%的程序员都答错了
    · winform 绘制太阳,地球,月球 运作规律
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    点击右上角即可分享
    微信分享提示