首页 > 解决方案 > 如何同时遍历两个列表?

问题描述

我有两个std::list<std::string> list1 std::list<std::string> list2,我需要以某种方式同时遍历它们。

我尝试了一些事情,比如使用std::transform和做std::transform (list1.begin(), list1.end(), list2.begin(), list2.end());,但遗憾的是没有运气。

我目前正在做的是将它们打印出来,一次一个是

for(std::list<std::string>::iterator it=list1.begin(); it!=list1.end(); ++it) {
            cout << *it <<endl;
}

标签: c++

解决方案


可能有更聪明的方法来做到这一点,但这会起作用(请注意,如果列表的长度不同,它只会打印与较短列表中的项目一样多的项目对):

  for(std::list<std::string>::iterator it1=list1.begin(), it2=list2.begin();
     (it1!=list1.end())&&(it2!=list2.end());
     ++it1, ++it2) 
  {
     std::cout << *it1 << " : " << *it2 << std::endl;
  }

推荐阅读