基于范围的for循环向量迭代器不可递增

时间:2017-04-03 17:01:25

标签: c++ vector iterator

在我的应用程序中,我将所有当前打开的窗口存储在一个向量中,以便进行事件处理。打开窗口时,它会添加到矢量中并在关闭时删除。我有一个进程事件函数,我遍历该向量并使用当前事件更新所有窗口:

    for(Window* w : windows)
        w->OnWindowEvent(event);

但是,如果我关闭窗口,我会收到错误' Debug Assertion failed:vector iterator not incrementable'。根据我的理解,如果当前的迭代器无效,例如像擦除元素时,这是我在这里和其他网站上阅读的内容。但我不是在这里做的。另一件奇怪的事情是,如果我使用传统的'像这样的循环:

for(int i = 0; i < windows.size(); i++)
    windows[i]->OnWindowEvent(event);

然后我可以直接使用相同的基于范围的循环而没有任何错误。 我错过了什么吗?

0 个答案:

没有答案