C++中set的擦除功能会改变其他元素的地址吗?

che*_*eng 5 c++ set erase

我有以下代码:

set<Key> test;
test.insert(key1);
test.insert(key2);
iter1 = test.find(key1);
iter2 = test.find(key2);
test.erase(iter1);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果删除了key1,我现在可以使用iter2来引用test2中的key2吗?

谢谢

Cat*_*lus 7

是的,set erase只会使指向被删除元素的迭代器无效(请注意,对于所有容器,这不一定是真的).