【发布时间】:2014-08-11 15:02:55
【问题描述】:
我的无限循环“for”的停止条件有问题。我已经为两个向量声明了两个迭代器。这些向量可能包含不同数量的元素(向量的大小不相等 - 大多数情况下)。
好的,这是我的一段代码:
vector<int> even;
vector<int> odd;
vector<int>::iterator itEven;
vector<int>::iterator itOdd;
顾名思义,向量存储偶数和奇数整数。用数据填充我的向量后,我想交替显示两个向量的内容。我在这里做:
for(itEven = even.begin(), itOdd = odd.begin() ;; itEven ++, itOdd ++){
if(itEven != even.end())
printf("%d ", *itEven);
if(itOdd != odd.end())
printf("%d ", *itOdd);
if(itEven == even.end() && itOdd == odd.end())
break;
}
我的中断指令仅在向量包含相同数量的元素时才有效。出了点问题,当第一个向量持有一个元素而第二个持有三个元素时,我会陷入无限循环 - 例如。
希望我对问题的描述对您来说很清楚,感谢您的回复和帮助。
【问题讨论】:
-
当您将两个迭代器递增相同的次数时,您会期望什么?
-
您最好在循环内而不是在 for 循环中迭代迭代器,以更好地控制中断条件
-
从标准库中增加任何 结束 迭代器会导致 UB。结束迭代器only 是一个指向结束后一个元素的迭代器。指向末尾 2+ 的迭代器不等于调用
end返回的迭代器。 -
感谢您的评论和帮助