map以及hash_map

原理简介

首先map和hash_map都是关联容器,能够实现数据的一对一映射,但是两者在实现上有很大的区别,map的内部机制是红黑树,红黑树是一种特殊的平衡二叉树,所以map中数据查找效率是logn级别的,但是其空间利用率接近100%,也即map开辟的空间中没有不利用的空间。而hash_map本质上是散列表,所以其映射关系是由一个内部的映射函数实现的,也即其实数学中的函数映射,由于函数映射过程中可能产生不同的输入值对应相同的解,所以hash_map中可能会产生散列冲突现象,所以为了避免这种现象,散列表和散列函数都要涉及的足够巧妙,并且其结构对于数据是非常敏感的,散列函数较差的散列表可能冲突较多,且实际空间利用率很低。

STL用法

hash_map和unordered_map这两个的内部结构都是采用哈希表来实现。区别在哪里?unordered_map在C++11的时候被引入标准库了,而hash_map没有,所以建议还是使用unordered_map比较好。unordered_map的头文件是#include <unordered_map>,hash_map的头文件是#include <hash_map>

map用法

unordered_map用法

成员方法功能
begin()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值