// display vector elements using const_iterator
   for ( constIterator = integers.begin();
      constIterator != integers.end(); ++constIterator )
      cout << *constIterator << ' ';

我们可以使用constIterator < integers.end()吗?

谢谢

最佳答案

operator< 仅为 random access iterators 定义。例如,这些由 std::vectorstd::string 提供,容器本质上将其数据存储在连续存储中,其中迭代器通常只是包装好的指针。例如 std::list 提供的迭代器只是 bidirectional iterators ,它只提供相等性的比较。

传统上,使用 < 而不是 != 被视为防御性编程。如果出现错误(例如,有人将 ++i 更改为 i+=2 ),即使从未达到确切的结束值,循环也会终止。然而,另一种观点是它可能会掩盖错误,而循环无休止地运行或导致崩溃会使错误变得明显。

关于C++ -- STL Vector::const_iterator 为什么不使用 < xx.end()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4091380/

10-11 23:07
查看更多