【发布时间】:2020-09-09 09:59:01
【问题描述】:
我创建了一个向量v,它是 [-5,-3]。我为其开头分配了一个迭代器iti,然后将另一个迭代器itj 分配为iti+1。由于我的向量只有 2 个元素,我认为itj 被识别为向量的结尾或v.end()。但事实并非如此。
任何想法为什么会发生这种情况?
vector<int>v;
v.push_back(-5);
v.push_back(-3);
vector<int>::iterator iti, itj;
iti = v.begin();
itj = iti + 1;
if(itj==v.end())
cout << "1";
else
cout << "2";
为什么会打印出 '2' 而不是 '1'?
【问题讨论】:
-
.end()是不是到最后一个元素的迭代器,而是一个“过去最后一个元素”的迭代器。所以iti + 2 == v.end()是真的。
标签: c++ pointers vector iterator