繁体   English   中英

boost :: unordered_map是否返回值的引用或副本

[英]Does boost::unordered_map return a reference or copy of value

当使用boost unordered_map时,如果我执行map [key],返回的类型将是对值V的引用还是该值的副本?

谢谢

这是一个参考,否则将无法正常工作:

map[key] = value;

根据文档 ,它似乎是参考。

mapped_type& operator[](key_type const& k);

Boost文档

appedd_type&运算符[](key_type const&k);

功效:
如果容器尚不包含键等于k的元素,则插入值std :: pair(k,mapping_type())

返回:
对x.second的引用,其中x是容器中已经存在的元素,或者是新插入的,具有等于k的键的元素

抛出:
如果除调用哈希器以外的其他操作引发了异常,则该函数无效。

注意:可以使迭代器无效,但前提是插入操作导致负载系数大于或等于最大负载系数。

指针和对元素的引用永远不会无效。

访问运算符[]始终返回引用。 如果地图元素不存在,则将创建它。 因此,为避免重复搜索,以下模式很有用:

std::unordered_map<K, T> m = populate_me();

T & value = m[key];   // created if non-existent

// use "value" rather than repeated "m[key]"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM