它是如何工作的?

时间:2018-04-20 17:44:18

标签: c++ loops iterator set

当我在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循环并不重要,而是任何操作 抱歉我的英文

1 个答案:

答案 0 :(得分:3)

您的代码中存在未定义的行为。使用键11擦除元素后,指向它的迭代器不再有效,并且它在以下循环中的用法是非法的。

因此,无论你在程序中获得什么结果都是无关紧要的。