如何解决为什么不能将两个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-get
和const 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 举报,一经查实,本站将立刻删除。