我使用了boost zip迭代器用于相同大小的列表,不小心我已经通过了不同的大小列表来迭代。我们可以将boost zip迭代器用于两种不同的大小,如果不是那么在boost或c ++中有任何其他选择吗?
答案 0 :(得分:0)
根据source code,我们可以确定以下事实。
如果迭代器元组中的所有迭代器都相等,则两个zip迭代器是相等的。
推进zip迭代器意味着推进迭代器元组中的所有迭代器。
Dereferencing返回一个由迭代器元组中的解引用迭代器构建的元组。
当您迭代(将您的结束条件与boost::make_zip_iterator(boost::make_tuple(end1, end2))
之类的内容进行比较)并达到其中一个列表时,循环将不会终止(参见1),导致无效的解除引用(参见3)
您应该找到两个列表的公共长度(例如std::min(list1.size(), list2.size()
)并初始化结束迭代器,以便两个范围的长度相等。