c++ - 运行时错误 : Assertion Failed, 列表迭代器不可取消引用

标签 c++ list pointers

我已经尝试解决这个问题好几个小时了,但我不知道如何解决这个问题。我在列表容器中有一个值列表,如下所示:

[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

我还创建了另一个指向每 4 个元素的指针列表。所以他们指出以下内容:

[0,4,8,12]

我有一个方法可以返回指针列表的末尾。像下面这样:

int*    end() {return *(pointerlist.end()) ;};

这给我“运行时错误:断言失败,列表迭代器不可取消引用”

我知道我收到此错误是因为我试图超出指针列表的末尾,但我希望它具有此列表中最后一个元素的值。我也尝试过执行以下操作,但这只会让事情变得更糟。

int*    end() {return *(pointerlist.end() - 1) ;};

有人知道如何检索指针列表中的最后一个元素吗?

最佳答案

应该这样做:

int* end() {
    assert(!pointerlist.empty());
    return pointerlist.back();
}

关于c++ - 运行时错误 : Assertion Failed, 列表迭代器不可取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237049/

相关文章:

c++ - 存在函数模板时的参数转换

c++ - QML:自定义 QObject 类型错误

r - 向下复制列表元素以填充 NA 列表元素

c - 选择排序指针字符数组的段错误(核心转储)错误

python - 循环中的发电机组被覆盖

c++ - 如何手动创建 Cereal 导入文件?

c++ - 在函数定义中有条件地执行计算的最佳方法

c - C 语言中 NULL 总是为零吗?

python - 根据另一个列表更新列表中的项目

list - 理解实现 foldr 和 foldl 的函数