当使用boost unordered_map时,如果我执行map [key],返回的类型是对值V的引用还是值的副本?
由于
答案 0 :(得分:2)
这是一个参考,否则这不起作用:
map[key] = value;
答案 1 :(得分:2)
根据documentation,它似乎是一个参考。
mapped_type& operator[](key_type const& k);
答案 2 :(得分:1)
mapped_type&安培; operator [](key_type const& k);
<强>效果:强>
如果容器尚未包含具有等于k的键的元素,则插入值std :: pair(k,mapped_type())<强>返回:强>
对x.second 的引用,其中x是容器中已有的元素,或者是新插入的元素,其键值等于k<强>抛出:强>
如果除了调用hasher之外的操作抛出异常,则该函数无效。备注:强> 可以使迭代器无效,但仅当插入导致加载因子大于或等于最大加载因子时才会失效。
指针和对元素的引用永远不会失效。
答案 3 :(得分:0)
访问者运算符[]
始终返回引用。如果map元素不存在,则将创建它。因此,为了避免重复搜索,以下模式很有用:
std::unordered_map<K, T> m = populate_me();
T & value = m[key]; // created if non-existent
// use "value" rather than repeated "m[key]"