这是我的代码:

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.
}

10-04 13:51