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

舞蹈

我遇到了以下代码的奇怪的运行时错误:

#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;
}

错误提示:

向量擦除迭代器超出范围

屏幕截图

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

皮疹

正确的形式是

mylist.erase(
    std::remove_if(mylist.begin(),mylist.end(),lambda),
    mylist.end());

您还需要将传递end给擦除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么会出现错误:列表索引超出范围

为什么会出现“下标超出范围”错误?

为什么即使在声明向量的大小之后也会出现运行时错误?

为什么会出现运行时错误?

为什么会出现访问冲突运行时错误?

读取字符串向量时超出范围运行时错误

运行时错误:向量下标超出范围:检查空集

处理运行时错误'9':在工作表上迭代时下标超出范围

在Golang中,为什么这样的类型转换会导致运行时错误:索引超出范围?

为什么VB6 FlexGrid抛出运行时错误381'下标超出范围'?

为什么我的运行时错误索引超出范围,是对 Slice 还是 Map 的使用不当?

选择工作簿时出现运行时错误9下标超出范围

运行时错误“ 9”:下标超出范围

VBA运行时错误“ 9”下标超出范围

下标超出范围运行时错误9

紧急:运行时错误:索引超出范围1

紧急:运行时错误:索引超出范围

运行时错误'1004'指定的值超出范围

运行时错误9-下标超出范围

向量迭代器擦除给我一个运行时错误?

在python中写入XML文件时,为什么会出现子索引超出范围的错误?

Python 列表列表为什么会出现此错误:IndexError:列表索引超出范围?

为什么我的两个切片之一会因“运行时错误:索引超出范围”而感到恐慌?

为什么运行此程序时出现“字符串索引超出范围”错误?

base64编码字节数组时,为什么会出现“索引超出范围”错误?

当我所做的只是遍历列表的长度时,为什么会出现索引超出范围错误?

为什么这段代码在中间计算时会出现运行时错误?

为什么在StackBlitz上运行时,我的Angular应用程序会出现错误?

比较两列时为什么会出现运行时错误?