【发布时间】:2012-05-09 13:36:44
【问题描述】:
我有以下代码:
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
有人可以解释为什么这两个值不同吗?
【问题讨论】:
-
我不是 100% 确定,但是正向迭代器会向前看,而反向迭代器会向后看。
v = {1, 2, * 3, 4...}其中 * 是它们两个的迭代器位置。看看他们往哪个方向走。 -
@chris: 不完全是:或者更好,这就是 java 定义迭代器的方式(指向“中间”) C++ 有不同的概念。但实际结果也符合你的解释。但是是结果,而不是定义。
-
@EmilioGaravaglia,感谢您清理它。这不是我很熟悉的东西。