map、hash_map、unordered_map

相同点:
1.都是关联容器,关联容器将值与键关联在一起,并使用键来查找值,例如,值可以是表示雇员信息(如姓名、地址)的结构,而键可以是唯一的员工编号。为获取雇员信息,为获取雇员信息,程序将使用键查找雇员结构。2.键是唯一的。
不同点
map是有序关联容器,是经过排序的,这让它们能够使用表示“小于”概念的比较谓词。其底层是基于树结构实现的。hash_map、unordered_map都是无序关联容器,它们使用的是基于概念“等于”的比较谓词,其底层都是基于哈希表实现的。添加和删除元素的速度比较快以及查找算法的效率也很高,
在c++语言中,第一个广泛使用的哈希表实现是 (SGI)标准模板库(STL)中的hash_map、hash_set、hash_multiap、hash_multiset类模板。由于其实用性,它们后来被包含在c++标准库的其他几个实现中(例如,GNU编译器集合的libstdc++和Visual c++标准库)。hash_*类模板被提交到c++技术报告1 (c++ TR1)中,并以unordered_*的名称接受。后来,它们被合并到c++标准的c++ 11修订版中。
总体来说,hash_map或者unordered_map 查找速度会比map快,属于常数级别;而map的查找速度是log(n)级别。并不一定常数就比log(n)小,hash还有hash函数的耗时。如果你考虑效率,特别是在元素达到一定数量级时,可以考虑hash_map或者unordered_map。但若你对内存使用特别严格,希望程序尽可能少消耗内存,那

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值