繁体   English   中英

运行时错误:断言失败,列表迭代器不可取消

[英]Runtime Error: Assertion Failed, List Iterater not dereferencable

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

[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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM