// display vector elements using const_iterator
for ( constIterator = integers.begin();
constIterator != integers.end(); ++constIterator )
cout << *constIterator << ' ';
我们可以使用constIterator < integers.end()
吗? ?
谢谢
最佳答案
operator<
仅为 random access iterators 定义。例如,这些由 std::vector
提供。和 std::string
,本质上是将数据存储在连续存储中的容器,其中迭代器通常只不过是包装指针。提供的迭代器,例如 std::list
只有 bidirectional iterators ,它只提供相等性的比较。
传统上,使用 <
被视为防御性编程而不是 !=
.如果出现错误(例如,有人将 ++i
更改为 i+=2
),即使从未达到确切的结束值,循环也会终止。然而,另一种观点认为它可能会掩盖错误,而循环无休止地运行或导致崩溃会使错误变得明显。
关于C++ -- STL Vector::const_iterator 为什么不使用 < xx.end()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091380/