3

我有项目列表(项目类),我想获取列表的最后一个值,当我运行程序时它向我显示愚蠢的错误(错误在运行时并且没有编译器错误)

这是代码:

int id = 1;
if(items.size() > 0)
    id = items.end()->getID() + 1;

items 是列表变量,getID() 是 Item 类的函数,它返回 int

错误是“列表迭代器不可取消引用”

谢谢你们的帮助;)

4

2 回答 2

6

items.end(), 和其他容器结束迭代器(例如items.rend())指向列表末尾之后的一个。试试items.back()->getID() + 1;

于 2013-02-02T10:36:16.820 回答
5

std::list::end返回一个迭代器,指向容器最后一个元素之后的元素,该元素充当占位符;试图访问它会导致未定义的行为

您可以使用std::list::back或反向迭代器std::list::rbegin

尝试:

items.back()->getID() +1;
(*items.rbegin())->getID() +1;
于 2013-02-02T10:36:21.630 回答