std::unordered_map 使用总结

最近在使用unordered_map的时候,遇到了一些问题,写这篇文章来记录一下。
首先,先简单介绍一下unordered_map:

template < class Key,                        //键值对中键的类型
           class T,                          //键值对中值的类型
           class Hash = hash<Key>,           //容器内部存储键值对所用的哈希函数
           class Pred = equal_to<Key>,       //判断各个键值对键相同的规则
           class Alloc = allocator< pair<const Key,T> >  // 指定分配器对象的类型
           > class unordered_map;

unordered_map是一种根据键值查找元素的无序容器,与其相类似的还有std::map,两者的区别是map的键值(key)是有序的,unordered_map是无序的。在需要使用map容器的时候,如果是需要有序排列键值的话,那毫无疑问是选用std::map,否则,建议使用unordered_map,因为unordered_map插入查找的效率会比map要高一些。

最近在项目中使用unordered_map的时候,由于键值Key使用了自定义类型,导致编译出现了问题,仔细查看了一下错误的原因,原来是使用自定义类型键值的时候,需要将该类型进行==运算符重载,否则unordered_map将无法判断两个键值是否相等,同理,对于std::map的话,使用自定义类型键值就需要重载<运算符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值