为什么两个std::向量迭代器不能求和



这更像是一个关于C++的好奇问题,是在学习如何找到迭代器引用的索引后提出的。

给定两个向量迭代器,为什么它们可以相互相减而不能相加?

例如,为什么要编译并运行:

std::vector<int> vect;
vect.begin() - vect.end();

而这不是:

std::vector<int> vect;
vect.begin() + vect.end();

问题是更好地了解迭代器的行为。对于那些评论和回答的人,谢谢!我需要更多地研究指针算术来理解这一点。

我认为帮助最大的答案是迭代器就像指针。

减去两个指针以获得它们的距离差是有意义的,就像在数字线上看1-10,想要距离在7和3之间一样,你可以从3中减去7,得到4的距离。

加上7和3得到10,这无助于我找到它们之间的距离,而且在容器中,最终会指向容器边界之外的东西,这既没有帮助也没有用处。

迭代程序是以指针为模型的。

给定指针P1P2,表达式P2 - P1给出指针之间的偏移量/距离。从表达式P1 + P2中没有什么可期待的。将这个想法扩展到迭代器中,您就会理解为什么两个迭代器之间的减法是有意义的,而加法则没有意义。

因为执行该操作没有多大意义,因此在iterator中没有定义operator+

相关内容

  • 没有找到相关文章

最新更新