我有以下代码:
std::unordered_map<std::string, std::string> map;
map["k1"] = "v1";
auto& v1 = map["k1"];
map["k2"] = "v2";
阅读https://en.cppreference.com/w/cpp/container/unordered_map#Notes后,我发现交换函数不会使容器中的任何迭代器失效,但它们确实会使标记交换区域结束的迭代器失效。即使相应的迭代器失效,对于存储在容器中的键或数据的引用和指针只有通过删除该元素才会无效。
看起来,即使在插入期间重新散列可能会发生,也可以安全地在插入新值后使用v1
。 我对这句话的解释正确吗? 在修改map之后,我可以使用map中的值的引用/指针(显然,删除值本身将使引用/指针无效)?