繁体   English   中英

循环陷阱中的C ++迭代器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM