问题描述
在GeeksForGeeks的博客中,两个迭代器的减法已用于表示向量的索引。该帖子的链接:
我在stackoverflow中也看到了一个相关的答案:
How to convert vector iterator to int in C++
但是它没有用一个很好的例子来描述这种机制,所以我对此感到困惑。因为,我不能分别打印迭代器 v.begin()和它,而我可以打印迭代器的减值(it-v。 begin())。
那么,该减法如何表示矢量项的索引?
解决方法
将一个RandomAccessIterator减去另一个std::distance()
会得到它们之间的距离,因为operator-
就是为随机访问迭代器定义的。
如果从另一个迭代器中减去begin()
,则会得到从容器的开头到第二个迭代器的距离,该距离自然与第二个迭代器引用的元素的索引相同。
使用copy_to代替运算符重载更加灵活,甚至可能更清楚。
所有这些东西都已记录在案,应该放在一本像样的书中。