完成之後的我有以下代碼:迭代器值從反向迭代值轉換
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