【c++】STL之unordered_map用法总结

介绍

  • unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序
  • 存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。
  • 所以使用时map的key需要定义operator<。而unordered_map需要定义hash_value函数并且重载operator==。但是很多系统内置的数据类型都自带这些,
  • 那么如果是自定义类型,那么就需要自己重载operator<或者hash_value()了。
  • 如果需要内部元素自动排序,使用map,不需要排序使用unordered_map
  • 使用cmake来辅助编译含有unordered_map的源码时,可能会报错说:#error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.。这表示unordered_map是c++11的标准,此时在cmakelist中加入SET( CMAKE_CXX_FLAGS “-std=c++11 -O3”)就可以编译过了。

用法

1. 头文件

#include <unordered_map>

2. unordered_map声明及初始化

3. unordered_map基本操作

(1)迭代器

  • begin   返回指向容器起始位置的迭代器(iterator)
  • end    返回指向容器末尾位置的迭代器
  • cbegin  返回指向容器起始位置的常迭代器(const_iterator)
  • cend    返回指向容器末尾位置的常迭代器

(2)容量

  • size    返回有效元素个数
  • max_size 返回 unordered_map 支持的最大元素个数
  • empty 判断是否为空

(3)元素的访问

  • c[key]    访问元素
  • c.at(key)        访问元素

(4)元素的修改

  • insert   插入元素
  • erase   删除元素
  • swap    交换内容
  • clear   清空内容
  • emplace  构造及插入一个元素
  • emplace_hint 按提示构造及插入一个元素

(5)操作

  • find       通过给定主键查找元素,没找到:返回unordered_map::end()//这个很重要, leetcode上面一些题需要用这个特性
  • count      返回匹配给定主键的元素的个数
  • equal_range   返回值匹配给定搜索值的元素组成的范围

(6)Buckets

  • bucket_count    返回槽(Bucket)数
  • max_bucket_count 返回最大槽数
  • bucket_size     返回槽大小
  • bucket       返回元素所在槽的序号
  • load_factor     返回载入因子,即一个元素槽(Bucket)的最大元素数
  • max_load_factor   返回或设置最大载入因子
  • rehash       设置槽数
  • reserve       请求改变容器容量

参考:https://blog.csdn.net/Windgs_YF/article/details/80623007

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值