【问题标题】:How does it work?它是如何工作的?
【发布时间】:2018-04-20 17:44:17
【问题描述】:

当我在 for_each 之前使用“it”时,我得到 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 之后使用“它”时,我得到 -10 -3...15 和下一个(一些数字,在我的情况下是 48,我想这只是垃圾)7 15 我刚决定试一试,看看会发生什么 现在我明白了,我什么都不明白))) for_each 循环无关紧要,而是任何操作 对不起我的英语

【问题讨论】:

  • 你能想出一个比这更模糊的问题标题吗?

标签: c++ loops iterator set


【解决方案1】:

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

因此,您在程序中得到的任何结果都是无关紧要的。

【讨论】:

猜你喜欢
  • 2021-09-26
  • 2011-03-18
  • 2015-06-16
  • 2012-08-31
  • 2012-07-13
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
相关资源
最近更新 更多