我想在同一循环中修改存储在相同类型T的两个向量中的值。例如,假设我有两个int向量:
std::vector<int> student_ids;
std::vector<int> teacher_ids;
现在,我想同时遍历这两个向量,现在仅显示每个值。例如:
for(int id : student_ids, teacher_ids)
{
std::cout << id << "\n";
}
我将如何实现这一目标?
这样,您可以在一个循环中迭代两个向量,但是请记住,如果两个向量的大小不相同,请检查边界。
std::vector <int>::iterator it1 = student_ids.begin();
std::vector <int>::iterator it2 = teacher_ids.begin();
while(it1 != student_ids.end() || it2 != teacher_ids.end()) {
if(it1 != student_ids.end()) {
std::cout << "Student: " << *it1 << std::endl;
++it1;
}
if(it2 != teacher_ids.end()) {
std::cout << "Teacher: " << *it2 << std::endl;
++it2;
}
}
否则,如果你是确保两个向量的大小相同,只需更换||
用&&
,你可以做掉if
这样的循环中的条件:
for(; it1 != student_ids.end() && it2 != teacher_ids.end(); ++it1, ++it2) {
std::cout << "Student: " << *it1 << std::endl;
std::cout << "Teacher: " << *it2 << std::endl;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句