为什么在向量循环中使用'!='而不是'<'更好?(C++)

10 c++ loops vector

为什么在向量循环中使用'!='而不是'<'更好?我只是看不出差异.

Tha*_*tos 22

因为你正在使用迭代器,并且它会使循环看起来与其他容器完全相同,所以你应该选择切换到其他容器类型,例如set,list,unordered_set等,其中<没有意义.


Uri*_*Uri 8

我会假设您的意思是使用!=vector.end()而不是<vector.size()从您的问题中不清楚.

更喜欢end()版本的一个原因是你真正想要做的是检查你是否到了最后.

在C中对数组进行这种检查的习惯用法是检查索引与大小的比较,但这是一种"遗留"行为.然后在Java世界中传播(作为< array.length),直到人们意识到数组是邪恶的并且Java最终支持泛型.但是,在C++中,当你有一个很好的集合类(如vector)时,没有理由使用这个习惯用法.它更具可读性,更易于维护.例如,它可以在必要时更容易切换到其他集合,因为您仍然在谈论结束.


Din*_*ngo 6

某些迭代器类型不支持less-than运算符 - 它们仅支持不等运算符.这就是为什么你经常会看到被忽略的运营商被抛弃的原因.