微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么不能将两个std :: vector迭代器求和?

如何解决为什么不能将两个std :: vector迭代器求和?

这更多是关于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,这并不能帮助我找到它们之间的距离,并且在一个容器中,最终指向容器边界之外的东西,这没有帮助或有用。

解决方法

迭代器是根据指针建模的。

给出指针sudo apt-getconst getMyHTML = (text) => <span>{getCountForCountry(text)}</span> const columns_payment_summary_table = [ { title: SettlementConstants.LABEL_QUANTITY_SELECTED,dataIndex: 'group',key: 'group',render: getMyHTML,} ] ,表达式P1为您提供指针之间的偏移/距离。表达式P2中没有什么可以指望的。 将该思想扩展到迭代器,您将理解为什么两个迭代器之间的减法有意义,而加法却没有意义。

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。