// 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/