当我在for_each之前使用“它”时,我明白了 11 7 15 和第二个循环 -10 -3 等等
int main()
{
std::set<int> mySet;
mySet.insert(5);
mySet.insert(3);
mySet.insert(1);
mySet.insert(-10);
mySet.insert(11); // <-
mySet.insert(15);
mySet.insert(-3);
mySet.insert(4);
mySet.insert(7);
mySet.insert(1);
std::set<int>::iterator it = mySet.find(11);
mySet.erase(11);
for(; it != mySet.end(); it++)
std::cout << *it << std::endl;
for(auto &temp : mySet)
std::cout << temp << std::endl;
return 0;
}
但是,当我在for_each之后使用“it”时,我明白了 -10 -3 ... 15和下一个(有些数字,在我的情况下为48,我猜它只是垃圾)7 15 我决定尝试一下,看看会发生什么 现在我明白了,我什么都不懂))) for_each循环并不重要,而是任何操作 抱歉我的英文
答案 0 :(得分:3)
您的代码中存在未定义的行为。使用键11
擦除元素后,指向它的迭代器不再有效,并且它在以下循环中的用法是非法的。
因此,无论你在程序中获得什么结果都是无关紧要的。