这是我的代码:
for (list<moveStringTree>::iterator tempIterator=moveList.begin();tempIterator!=moveList.end(); ++tempIterator)
{
moveStringTree *move = tempIterator;
}
但这给我一个错误。如果有铸造路,我不喜欢。这太浪费时间了。无论如何,我想抛出一个列表,并对其中的每个对象进行操作。我能做什么?
foreach将无济于事。因为只有它才能提供副本。
最佳答案
迭代器不是对象吗?
它是。 C ++中的对象等效于保存一个值的内存位置–不多也不少。但是,我不认为这与其余问题有什么关系。
但这给我一个错误。如果有铸造路,我不喜欢。这太浪费时间了。
我不知道这是什么意思。但是,以防万一,您的意思是复制:不,可能不太耗时。但是,如果是–不用担心;使用参考。
moveStringTree& move = *tempIterator;
foreach将无济于事。因为只有它才能提供副本。
废话。 foreach与手动迭代的功能相同。因此,您也可以将其与副本一起使用:
for (auto& o : moveList) {
// Do something.
}