在我的代码中,将在 std::map 中插入或删除,但不会更改现有键的值。 插入/删除新键时会更改现有键值的地址吗?
int main()
{
std::map<int,int> m;
for(int i(0);i<100000;i++){
m[i];
std::cout<< &m[0]<<std::endl;
}
return 0;
}
结果总是一样的...所以它不会对旧 key 产生影响? 顺便问一下,unordered_map 怎么样?
最佳答案
插入或删除其他元素时,现有元素的地址不会更改。换句话说,除非删除该特定元素,否则对元素的引用不会失效。
这对于所有基于节点的容器都是如此,其中包括关联容器(映射、集合、无序变体、它们的多个变体)和链接列表。对于基于数组的双端队列、 vector 或字符串来说,情况并非如此。
无序关联容器的迭代器在插入时可能会因重新散列而失效;这不会影响地址。
关于c++ - 插入新键时会更改现有键值的地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61771352/