STL中map,multimap,hashmap的区别。

stl中的map就是为了方便查找和定位。


下面先看看 list存数据和查找的情况。

1.使用list存储数据。

list是线性表,占用的是线性不连续的内容空间。  每个元素只与 它前面/它后面的元素 指向关系。也就是说,你拿到一个元素后,可以找到他的上一个元素或者下一个。要想找到更远的,那就得一步一步来。

这样,插入一个list元素,没有成本,很快。

但是查找一个list元素,时间成本就比较高了。如果倒霉的你总是从开头开始找,然后找到最后一个才找到你需要的,那你程序都空跑了好多次,造成性能浪费。

查找一个list元素的平均时间复杂度是 O(n)。


2.map

map是将key与value进行映射的一种数据结果。

map的key值是按照红黑二叉树分布的。

map插入一个元素和查找一个元素的复杂度是一样的,都是O(log2n)。

map不能插入对同一个key插入多个value,否则,后插入的value将覆盖前面的value。


3.hashmap

hashmap是使用散列表(也叫哈希表)实现的。

他插入和查找的速度与 哈希函数和冲突处理函数的 实现有关,是这两个函数耗时的总和。是一个常量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值