C++中unordered_map常用操作

unordered_map介绍

unordered_map记录元素的hash值,根据hash值判断元素是否相同。map相当于java中的TreeMap,unordered_map相当于HashMap。无论从查找、插入上来说,unordered_map的效率都优于hash_map,更优于map;而空间复杂度方面,hash_map最低,unordered_map次之,map最大。

unordered_map与map的对比

存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储(用红黑树实现),进行中序遍历会得到有序遍历。所以使用时map的key需要定义operator<。而unordered_map需要定义hash_value函数并且重载operator==。但是很多系统内置的数据类型都自带这些。

成员函数

1. 迭代器
begin   返回指向容器起始位置的迭代器(iterator)
end    返回指向容器末尾位置的迭代器
cbegin  返回指向容器起始位置的常迭代器(const_iterator)
cend    返回指向容器末尾位置的常迭代器
元素的键值分别是迭代器的first和second属性。使用(*it).first或者it->first获取。
2. 容量
size    返回有效元素个数
max_size 返回 unordered_map 支持的最大元素个数
empty 判断是否为空
3. 元素插入与删除
insert   插入元素
erase   删除元素 ,可以通过迭代器或者key进行删除
clear   清空内容
swap    交换内容

unordered_map<int,int> mymap;
//插入
mymap.insert({1,0});//数组插入
mymap[1] = 0;//键值插入
mymap.insert(mymap2.begin(),mymap2.end());//插入另一个哈希表中的元素
mymap.insert(pair<int,int>(0,1));
 
//删除
mymap.erase(mymap.begin()); 
mymap.erase(1);
mymap.clear();

4. 查找
find       通过给定主键查找元素,没找到:返回unordered_map::end
count      返回匹配给定主键的元素的个数
equal_range   返回值匹配给定搜索值的元素组成的范围

if (mymap.find(0) != mymap.end())
    cout << "not found" << endl;
else
	cout << "found" << endl;

参考文章:https://www.cnblogs.com/slothrbk/p/8823092.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值