c++是否有可能在std::map的生命周期内' map.end() '发生变化?



我想知道我是否有一个像这样声明的映射,

map<int, int> my_map;

并将end()迭代器赋值给变量,并且永远不更改

auto end_it = my_map.end()

然后我将通过对my_map进行多次擦除和插入来改变my_map

my_map的生命周期内是否始终成立?
end_it == my_map.end()

std::map::insert保证:

没有迭代器或引用无效。

std::地图::擦除担保:

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

因此,end迭代器应该保持有效。如果使用其他操作,应检查它是否会使迭代器失效。

std::map::swapdoes invalidateend()迭代器:

所有迭代器和引用仍然有效。end()迭代器无效。