[英]C++ iterator in for loop pitfalls?
我看到它提到的某个地方:
for ( itr = files.begin(); itr < files.end(); ++itr ) // WRONG
for ( itr = files.begin(); itr != files.end(); ++itr ) // ok
为什么第一个表达式错了? 我总是使用第一个表达式,并没有任何问题。
排序比较(如<
, >
, <=
, >=
将适用于随机访问迭代器,但许多其他迭代器(如链接列表上的双向迭代器)仅支持相等性测试( ==
和!=
)。 通过使用!=
您可以在以后更换容器而无需更改尽可能多的代码,这对于需要使用许多不同容器类型的模板代码尤为重要。
有不同类型的迭代器。 只有随机访问迭代器才支持<
运算符。 其他类型的迭代器(双向,输入,输出和转发)则没有。 但是所有迭代器都支持==
和!=
运算符。 因此,如果使用!=
则代码将适用于所有类型的迭代器。
前者仅适用于支持operator <
迭代器,而不是所有迭代器都支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.