我有2个向量,每个向量中只有4个值。我想遍历它们并将它们一起处理,因为两个向量中的值都在向量中的那些位置一起移动。
for (std::vector<boost::filesystem::path>::iterator i = volumeVec.begin(); i != volumeVec.end(); ++i) {
for (std::vector<boost::filesystem::path>::iterator j = sliceHeaderVec.begin(); j != sliceHeaderVec.end(); ++j) {
ParseHeader(j->string(), i->string(), sourceDir);
}
}
但是,当我运行
ParseHeader
时,它将处理比我期望的更多的值。我想我需要修复for循环的安排,但不知道该怎么办 最佳答案
您可能想要类似的东西:
assert(volumeVec.size() == sliceHeaderVec.size());
for (std::size_t i = 0; i != volumeVec.size(); ++i) {
ParseHeader(volumeVec[i].string(), sliceHeaderVec[i].string(), sourceDir);
}
或使用range-v3:
for (const auto& p : ranges::view::zip(volumeVec, sliceHeaderVec)) {
ParseHeader(std::get<0>(p).string(), std::get<1>(p).string(), sourceDir);
}