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

q09*_*987 4 c++

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

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

谢谢

sbi*_*sbi 8

operator<仅为随机访问迭代器定义.例如,这些容器由std::vectorstd::string实际上将其数据存储在连续存储中的容器提供,其中迭代器通常只是包装指针.例如,由例如提供的迭代器std::list仅是双向迭代器,其仅提供相等性的比较.

传统上,它被视为防御性编程<而不是使用!=.在错误的情况下(例如,有人改变++ii+=2)循环将终止,即使是从未达到的精确终值.但是,另一个观点是,它可能会掩盖错误,而循环运行无休止或导致崩溃会使错误显而易见.


Mar*_*rst 7

是的,您也可以使用operator <for deque :: :( const_)迭代器,但它不适用于任何其他容器的迭代器.

由于vector和deque提供随机访问迭代器,因此保证了operator <的工作.

  • 这是*它如何*对矢量(迭代器只是一个指针),但不是它如何为deque工作(我很确定deques是不连续的). (2认同)