c++ STL之unordered_map

本文详细介绍了unordered_map的特性,包括其通过键而非地址检索值的关联性、使用哈希表实现的无序性以及键的唯一性等。此外,还讲解了如何使用迭代器获取元素的键值对,并对比了其与map的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 特性

  1. 关联性:通过key去检索value,而不是通过绝对地址(和顺序容器不同)
  2. 无序性:使用hash表存储,内部无序
  3. Map : 每个值对应一个键值
  4. 键唯一性:不存在两个元素的键一样
  5. 动态内存管理:使用内存管理模型来动态管理所需要的内存空间

  

2.1 迭代器

unordered_map的迭代器是一个指针,指向这个元素,通过迭代器来取得它的值。

unordered_map<Key,T>::iterator it;
(*it).first;             // the key value (of type Key)
(*it).second;            // the mapped value (of type T)
(*it);

它的键值分别是迭代器的first和second属性

it->first;               // same as (*it).first   (the key value)
it->second;              // same as (*it).second  (the mapped value) 

所以这里‘.'和’->‘是有区别的:->是间接地址取值符;.是直接地址取值符。

 

与map相比,运行时间和占用率都比较少

 

参考文章:

https://blog.youkuaiyun.com/hk2291976/article/details/51037095

转载于:https://www.cnblogs.com/xiaoxue126/p/8998716.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值