我有物品清单(物品类) 我想得到list的最后一个值,当我运行程序时它会显示我的愚蠢错误(错误是在运行时并且没有编译器错误)
这是代码:
int id = 1;
if(items.size() > 0)
id = items.end()->getID() + 1;
items是列表变量,getID()是Item类的函数,它的'返回int
错误是“list iterator not dereferencable”
感谢您的帮助;)
答案 0 :(得分:6)
items.end()
和其他容器末尾迭代器(例如items.rend()
)指向列表末尾的一个。试试items.back()->getID() + 1;
。
答案 1 :(得分:4)
std::list::end返回容器的最后一个元素后面的元素的迭代器。此元素充当占位符;尝试访问它会导致未定义的行为。
您可以使用std::list::back或反转迭代器std::list::rbegin
尝试:
items.back()->getID() +1;
(*items.rbegin())->getID() +1;