map::operator[] 底层大致介绍及与 map::insert() 区别

简介: map::operator[] 底层大致介绍及与 map::insert() 区别

一、operator[] 底层 与 insert() 返回值

[std::map::operator[]]: https://legacy.cplusplus.com/reference/map/map/operator/

"A call to this function is equivalen to: … " —— 这个函数调用相当于

  1. make_pair(k, mapped_type()) 为了方便后续讲解,把创建的 pair 变量记为 pair_val

k ——> key ;mapped_type() ——> value

  1. this->insert(pair) 把该式的返回值结果记为 pair<Iterator_pair_val, bool>

  • map::insert() 的返回值为一个 pair ,pair::first 为指向键值(key)为 val 的迭代器 —— 无论是新插入的,还是已经存在着的。
  • 如果这个 val 是新插入的,则 pair::bool 为 true ;如果 val 已经存在, pair::bool 为 false 。
  1. *(pair<Iterator_pair_val, bool>.first) 取到 pair_val
  2. pair_val.second 以此实现对 mapped_type() 的修改

二、向 map 中添加一个元素,有什么区别?

2.1 被添加的元素 事先在 map 中不存在

根据 上一部分内容 ,调用 map::operator[] 添加元素时,会通过调用 map::insert() 完成插入,因此在这种情况下,直接调用 insert() 效率更高

2.2 被添加的元素 事先在 map 中存在

假设 map 中已经存在 pair<key1, value1>

调用 insert(pair<key1, value2>)不能直接对 key1 所映射的 value 值 进行修改 ,需要对 insert 的返回值进行一系列操作,才能实现。

在这种情况下,调用 map::operator[] 效率更高

相关文章
|
2月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
40 3
|
2月前
|
JavaScript 前端开发 索引
问js的forEach和map的区别
JavaScript中的`forEach`和`map`都是数组迭代方法。`forEach`遍历数组但不修改原数组,无返回值;它接受回调函数处理元素。`map`则遍历数组并返回新数组,新数组元素为回调函数处理后的结果。两者都接收元素、索引和数组作为回调函数参数。
28 7
|
19小时前
|
存储 JavaScript
js的forEach和map的区别
js的forEach和map的区别
7 1
|
5天前
|
存储 安全 程序员
老程序员分享:List、Map、Set之间的联系与区别:
老程序员分享:List、Map、Set之间的联系与区别:
|
16天前
|
存储 JavaScript 前端开发
Object和Map的区别
Object和Map的区别
|
2月前
|
存储 前端开发 索引
【Web 前端】ES6中,Set和Map的区别 ?
【5月更文挑战第1天】【Web 前端】ES6中,Set和Map的区别 ?
|
2月前
|
存储 JavaScript 前端开发
JavaScript高级主题:JavaScript 中的 Map 和 Set 是什么?它们有什么区别?
JavaScript的ES6引入了Map和Set数据结构。Map用于存储键值对,适合通过键进行查找,而Set则存储唯一值,无键且不支持键查找。两者在性能上表现出色,尤其在频繁的写入删除操作中。选择使用哪个取决于具体应用场景:键值对需求选Map,独特值集合则选Set。
29 2
|
2月前
|
存储 JavaScript 前端开发
set和map的区别
set和map的区别
70 4
|
2月前
|
存储 JavaScript
JS中Map对象与object的区别
JS中Map对象与object的区别
|
2月前
|
存储 JavaScript 前端开发
JavaScript 中 Set 和 Map 的区别
JavaScript 中 Set 和 Map 的区别
43 0