同时迭代两个std :: lists

Tom*_*fty 6 c++ iterator std

对不起,如果这个问题太简单了.

先前的错误检查确保l1.size() == l2.size().

std::list<object1>::iterator it1 = l1.begin();
std::list<object2>::iterator it2 = l2.begin();

while(it1 != l1.end() && it2 != l2.end()){

  //run some code

  it1++;
  it2++;
}
Run Code Online (Sandbox Code Playgroud)

这是一种合理的方法,还是有更优雅的解决方案?谢谢你的帮助.

mas*_*oud 9

for如果无条件地增加,我更喜欢使用:

for(; it1 != l1.end() && it2 != l2.end(); ++it1, ++it2)
{
    //run some code
}
Run Code Online (Sandbox Code Playgroud)

在列表大小相同的情况下,您可以省略一个测试,但我不确定在运行某些代码时会发生什么!