我经常看到这个:
for ( auto it = vector.begin(); it != vector.end(); ++it ) { ... }
虽然我认为在迭代向量时这应该更安全:
for ( auto it = vector.begin(); it < vector.end(); ++it ) { ... }
特别是当矢量中的项目被删除或有跳跃等时。
第一次超过秒的优势是什么?为什么不只使用第二个?
编辑:当查看“重复问题”的答案时,任何列表都使用“!=”而不是“&lt;”更通用。但我没有特别看到向量的优势。
案例:您遍历向量,并删除一些项目(例如过滤器)。最后一项被删除,这意味着你的迭代器现在指向vector.end(),在for循环检查之前,你的迭代器递增,因此it = vector.end() + 1
和(it != vector.end()) == true
,所以循环继续。 / p>