使用[]进行C ++地图插入

时间:2018-05-05 12:39:18

标签: c++ stdmap

我发现当找不到密钥时,下标运算符中的代码与std::map的代码类似。但是在这里他们添加了一个默认值。

__i = insert(__i, value_type(__k, mapped_type()));

现在,如果我这样做

std::map<std::string,int> mapped;
mapped["current"] = 5;

我想知道如何使用上述语句将该对添加到地图中。

1 个答案:

答案 0 :(得分:0)

operator[]插入地图元素(如果找不到),然后返回它。

因此,参数键(__i)和值(__k)将添加到地图中。

这是一个STL实现:

_Tp& operator[](const key_type& k) { // k is the parameter you passed

    iterator i = lower_bound(k);

    // if i -> first >= k then insert a place for the new element.
   if (i == end() || key_comp()(k, (*i).first))
       i = insert(i, value_type(k, _Tp()));

    // return a reference to the element mapped to by the key
    return i -> second;
 }

由于返回了引用,这与访问数组的方式完全相同:

您可以分配 ray[5] = 10访问权限 int i = ray[5]