为什么擦除方法会影响结束方法

Why erase method affect end method?

本文关键字:方法 结束 影响 为什么 擦除      更新时间:2023-10-16

我是C++的新手,我尝试了很多事情来了解它是如何工作的。

在这段代码中,我不明白为什么我的vec.end((的第一个值是可以的,而在擦除方法之后,我的vec.end((等于我的最后一个元素(5(。

一种解释是vec.end((将指向ex vec[4](5(,但当我再次应用vec.enses((时,vec.end仍然等于5。

如果有人能向我解释为什么会发生这种事,我将不胜感激。

#include <iostream>
#include <vector>
int main()
{
std :: vector<int> vec{1 , 2 , 3 , 4 , 5};
auto it = vec.begin();
std :: cout << *(vec.end()) << std :: endl;
std :: cout << vec.size() << std :: endl;
vec.erase(it);
std :: cout << *(vec.end()) << std :: endl;
std :: cout << vec.size() << std :: endl;
return 0;
}

vec.end((总是指向最后一个元素之后的虚拟元素。使用*vec.end((时,返回值无效,可以是任何值。您可以通过打印(*(vec.end((-1((并看到它等于最后一个元素来看到这一点。