完成之后的我有以下代码:迭代器值从反向迭代值转换
int main()
{
vector<int> v;
for(int i = 0; i < 10; ++i)
v.push_back(i);
auto it = v.begin() + 3;
cout << "Iterator: " << *it << endl;
vector<int>::reverse_iterator revIt(it);
cout << "Reverse iterator: " << *revIt << endl;
}
运行此代码我得到以下输出后:
Iterator: 3
Reverse iterator: 2
有人能解释为什么2个值不同?
我不是100%确定的,但前向迭代器会向前看,而反向迭代器会回头看。 'v = {1,2,* 3,4 ...}'其中*是它们两者的迭代器位置。看看他们要走哪个方向。 – chris
@chris:不完全是:或者更好,这是java如何定义迭代器(指向“之间”)C++有不同的概念。但实际结果也是按照你的解释。但结果是,而不是定义。 –
@EmilioGaravaglia,谢谢你的清理。这不是我所熟悉的。 – chris