如果我执行下面的代码:迭代一个向后的QList
QList<int> l;
QList<int>::const_iterator lI;
l.append(1);
l.append(2);
l.append(3);
l.append(4);
lI = l.constEnd();
while(lI != l.constBegin()) {
std::cout << *lI << std::endl;
--lI;
}
我得到这样的输出:
17
4
3
2
我已经解决了它使用QListIterator<int>
,但我真的不明白为什么这不起作用!
在此先感谢...
在第一次迭代中,您将解引用一个结束迭代器。这些都是不可忽略的,而且你正在调用未定义的行为。 – jrok 2013-05-08 13:04:32
然后我不明白为什么它会以相反的方式工作!如果将lI设置为constBegin,则更改if条件以请求constEnd,并在每次迭代中递增迭代器,然后获得正确的输出。 – janr 2013-05-08 13:11:13
'begin()'==第一个元素,'end()'==一个结尾。这就是为什么它以相反的方式工作。 – cmannett85 2013-05-08 13:15:06