在for循环中使用(it!= vector.end())而不是(it< vector.end())有什么好处?

时间:2018-05-08 11:02:53

标签: c++ vector iterator

我经常看到这个:

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>

0 个答案:

没有答案