C++ 两种不同列表大小的boost-zip迭代器

C++ 两种不同列表大小的boost-zip迭代器,c++,boost,iterator,C++,Boost,Iterator,我对相同大小的列表使用了boostzip迭代器,但我无意中传递了不同大小的列表进行迭代。我们可以使用Boost ZIP迭代器,在两个不同的大小,如果不是,那么在Boost或C++中的任何其他选择?< P>基于我们可以确定以下事实。 比较: 如果迭代器元组中的所有迭代器相等,则两个zip迭代器相等 推进: 提升zip迭代器意味着提升迭代器元组中的所有迭代器 取消引用: 解引用返回从迭代器元组中的解引用迭代器构建的元组 当您迭代(将您的作为结束条件与类似于boost::make_-zip_迭代器(

我对相同大小的列表使用了boostzip迭代器,但我无意中传递了不同大小的列表进行迭代。我们可以使用Boost ZIP迭代器,在两个不同的大小,如果不是,那么在Boost或C++中的任何其他选择?

< P>基于我们可以确定以下事实。
  • 比较:
  • 如果迭代器元组中的所有迭代器相等,则两个zip迭代器相等

  • 推进:
  • 提升zip迭代器意味着提升迭代器元组中的所有迭代器

  • 取消引用:
  • 解引用返回从迭代器元组中的解引用迭代器构建的元组


    当您迭代(将您的作为结束条件与类似于
    boost::make_-zip_迭代器(boost::make_-tuple(end1,end2))
    的内容进行比较)并到达其中一个列表的和时,循环将不会终止(请参见1),从而导致无效的取消引用(请参见3)



    您应该找到两个列表的公共长度(例如,
    std::min(list1.size(),list2.size()
    ),并初始化结束迭代器,使两个范围的长度相等。

    如果遇到结束()在其中一个序列中?您还可以使用将组合范围限制为最小大小。