C++ -- STL Vector::const_iterator 为什么不使用 < xx.end()?

标签 c++

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

相关文章:

c++ - 为什么 Visual Studio 在 64 位平台上链接 MSVCR90.dll (x86)?

c++ - SDL:初始化 TTF 问题。可能是自由打字?

c++ - 使用 std::streams 格式化输出

c++ - 使用 ALSA 的函数 snd_pcm_writei 我可以立即释放样本缓冲区吗?

c++ - 初始化成员结构的正确方法

c++ - 无法解析的外部符号在非常简单的应用程序中失败

c++ - 如何传递对模板类型名参数的引用

c++ - 通过 QMetaObject::invoke 调用 QListView setModel 问题

c++ - 尝试创建 posix 线程并获得从 'void*' 到 'void* (__attribute__((__cdecl__)) *)(void*) 错误的无效转换

c++ - vector 值不按插入顺序