问题描述
这更多是关于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