我有项目列表(项目类),我想获取列表的最后一个值,当我运行程序时它向我显示愚蠢的错误(错误在运行时并且没有编译器错误)
这是代码:
int id = 1;
if(items.size() > 0)
id = items.end()->getID() + 1;
items 是列表变量,getID() 是 Item 类的函数,它返回 int
错误是“列表迭代器不可取消引用”
谢谢你们的帮助;)
items.end()
, 和其他容器结束迭代器(例如items.rend()
)指向列表末尾之后的一个。试试items.back()->getID() + 1;
。
std::list::end返回一个迭代器,指向容器最后一个元素之后的元素,该元素充当占位符;试图访问它会导致未定义的行为。
您可以使用std::list::back或反向迭代器std::list::rbegin
尝试:
items.back()->getID() +1;
(*items.rbegin())->getID() +1;