[英]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.