C++ 中两个迭代器的减法如何表示向量项的索引?

Raw*_*ani 2 c++ iterator vector

在 GeeksForGeeks 的一篇博文中,两个迭代器的减法被用来表示向量的索引。该帖子的链接:

C++ 中的 std::find

我也在stackoverflow上看到过相关的答案:

如何在 C++ 中将向量迭代器转换为 int

但它没有用一个很好的例子来描述该机制,所以我对此感到困惑。因为,我无法分别打印迭代器v.begin()it,而我可以打印它们的减法值( it - v.begin() )

那么,减法如何表示向量项的索引呢?

Use*_*ess 5

将一个RandomAccessIterator与另一个 RandomAccessIterator 相减即可得到它们之间的距离,因为这就是operator-随机访问迭代器的定义。

如果从另一个迭代器中减去begin(),则得到从容器的开头到第二个迭代器的距离,这自然与第二个迭代器引用的元素的索引值相同。

使用std::distance()运算符重载代替运算符更灵活,并且可能更清晰。

所有这些内容都有记录,应该在一本像样的书中涵盖。

  • 这些都是你可以自己仔细思考的。如果您尝试打印迭代器,您会收到一条错误消息,其中包含您应该阅读并尝试理解的信息。 (2认同)