c++ 在 `std::map` 的生命周期内 `map.end()` 是否有可能改变

tes*_*060 3 c++ dictionary

只是想知道我是否有这样声明的地图,

map<int, int> my_map;
Run Code Online (Sandbox Code Playgroud)

并将end()迭代器分配给变量,并且永不更改,

auto end_it = my_map.end()
Run Code Online (Sandbox Code Playgroud)

然后稍后我将my_map通过多次擦除和插入来更改my_map,下面的内容在其生命周期内是否始终保持不变my_map

end_it == my_map.end()
Run Code Online (Sandbox Code Playgroud)

vll*_*vll 6

std::map::insert保证:

没有迭代器或引用无效。

std::map::erase保证:

对已擦除元素的引用和迭代器无效。其他引用和迭代器不受影响。

因此,结束迭代器应该保持有效。如果您使用任何其他操作,您应该检查它是否可能使迭代器无效。