为什么迭代器没有到达向量的末尾?

Osh*_*sho 3 c++ pointers iterator vector

我做了一个v[-5,-3]的向量。我iti为它的开头分配了一个迭代器,然后将另一个迭代器分配itjiti+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";
Run Code Online (Sandbox Code Playgroud)

为什么这会打印出“2”而不是“1”?

eer*_*ika 8

end是最后一个元素之后(不存在的)元素的迭代器。iti + 2将相等,end因为向量有 2 个元素。通常,对于大小为 的向量Nbegin + N等于end