为什么STL中判断循环条件都用!=运算符而不用<运算符?
为什么都写成这样:
for(vector <int> ::iterator it = vec.begin(); it != vec.end(); ++it)
而不是这样:
for(vector <int> ::iterator it = vec.begin(); it < vec.end(); ++it)
两者之间有什么区别吗?
[解决办法]
因为迭代器 有时候是不能比较大小的.
比如list
[解决办法]
看过的书上说最好用!=
没说为什么...
[解决办法]
简单的说,STL中,只有随机迭代器支持 <操作,但是所有的五种迭代器都支持!=操作。
读读《Effective STL》,或者《C++标准库》。不过这个问题很多书上都会讲。
[解决办法]
楼上的说得对,!=和 <本身基本不存在效率上的差别.之所以用!=而不用 <,主要就是为了让代码的可用性更高.因为对所有类型的iterator都可以用!=.