在C++ STL中的unordered_map emplace()
unordered_map::emplace() 是C++ STL中的内置函数,它将键和其元素插入到unordered_map容器中。它有效地增加了容器大小。如果同一键被不止一次emplace,那么map仅将第一个元素存储为map是不存储相同值的多个键的容器。
它与unordered_map insert()有何不同? emplace的优点是,它进行原地插入,并避免了对象的不必要复制。对于基元数据类型,我们使用哪种方式并不重要。有关详细信息,请参阅这里。
语法:
参数:
- key - 指定要插入到multimap容器中的键。
- element - 指定要插入到map容器中的键相应的元素。
返回值 :它返回一个迭代器和一个布尔值对。如果元素已经存在,则返回一个指向已插入元素的迭代器,如果元素不存在,则返回一个指向新添加的容器的迭代器。布尔值表示是否插入了。下面的程序说明了 emplace 函数的工作原理:
示例1:
输出:
示例2 :假设我们要显示字符串中的所有唯一字符及其索引。如果一个字符出现多次,则显示其首次出现的索引。
输出:
说明: “g”** 在字符串中出现了两次,分别是在“0”和“8”处,但是emplace函数不允许我们保存到unordered_map中,直到给定的key是唯一的。这就是为什么“0”被保存而“8”被排除。对于“e”,“1”被保存,“2”、“9”和“10”被排除。