繁体   English   中英

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

[英]C++ — STL Vector::const_iterator why not use < xx.end()?

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

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

谢谢

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM