小编Ara*_*ash的帖子

为什么会出现运行时错误:矢量擦除迭代器超出范围

对于以下代码,我遇到了一个奇怪的运行时错误:

#include <algorithm>
#include <vector>

using std::vector;

struct Data
{
    int id;
};

int main()
{
    vector<Data> mylist;

    Data m;
    m.id = 10;

    mylist.push_back(m);

    mylist.erase(std::remove_if(
        mylist.begin(),
        mylist.end(),
        [](const Data &m) {
        return m.id>100;
    }));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误说:

向量擦除迭代器超出范围

截屏

我不是在解决Ref1Ref2 之类的问题之后,而是意识到问题的原因以及我是否做错了什么。

c++ stl stdvector c++11

5
推荐指数
1
解决办法
1168
查看次数

标签 统计

c++ ×1

c++11 ×1

stdvector ×1

stl ×1