运行时错误:断言失败,列表Iterater无法解除引用

时间:2012-02-11 01:32:56

标签: 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()) ;};

这给了我“运行时错误:断言失败,列表Iterater无法解除引用”

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

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

有没有人有任何想法如何检索指针列表中的最后一个元素?

1 个答案:

答案 0 :(得分:1)

这应该这样做:

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