【发布时间】:2016-04-04 17:13:20
【问题描述】:
考虑这段代码:
class Foo123
{
QList<int> a = (QList<int>()) << 1 << 2 << 3;
QList<int>::const_iterator it;
public:
Foo123()
{
it = a.begin();
}
void print()
{
qDebug() << *it;
while(move())
{
qDebug() << *it;
}
}
bool move()
{
if(it != a.end())
{
++it;
return true;
}
return false;
}
};
Foo123 f;
f.print();
我总是在打印结束时得到一个额外的数字,就像这样:
1
2
3
58713 // this is random, from what I can tell
我想我正在打印一个范围值,但我不明白如何。谁能指出我的错误?
【问题讨论】:
-
你在增加迭代器之前检查它。您基本上将
a.end()打印为最后一个值。 -
a.end()不指向最后一个元素,而是一个“过去的”迭代器,不应该被取消引用,这可能会造成混淆。 -
@vu1p3n0x:我想我错过了 a.end() 没有指向最后一个元素...
标签: qt c++11 listiterator