C ++ |获取列表中的最后一个值

时间:2013-02-02 10:34:50

标签: c++ list

我有物品清单(物品类) 我想得到list的最后一个值,当我运行程序时它会显示我的愚蠢错误(错误是在运行时并且没有编译器错误)

这是代码:

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

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

错误是“list iterator not dereferencable”

感谢您的帮助;)

2 个答案:

答案 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;