为什么擦除方法会影响结束方法
Why erase method affect end method?
我是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((并看到它等于最后一个元素来看到这一点。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么擦除方法会影响结束方法
- 是否可以在基于范围的 for 循环中使用模板化的开始/结束方法
- 将数组作为函数参数传递,并在其上调用开始/结束方法
- C++ 结束此 8 位 for 循环的最佳方法是什么
- 单击“关闭控制台窗口”结束 C++ 控制台程序是正确的方法
- 类中的 bool 方法 控件可能到达结束 o 非空函数
- 在c++中,如果一个对象是在一个方法中创建的,那么该对象使用的内存是在该方法结束后自动释放的
- 这种递归方法不应该在返回后立即结束吗?
- 还有什么比使用istream eof更好的方法来读取文件直到它结束呢?
- 为什么方法调用结束复制构造函数
- CUDA:可能一个宿主方法调用内核/cudaMemcpy在内核/memcpy结束之前返回
- 为什么在方法作用域结束后要更改向量内容
- 如何定义运算符结束<<方法?
- 结束使用 ShellExecute 函数启动的C++程序的最佳方法是什么?
- 在<int>代码块结束之前释放分配给 std::vector 的内存的正确方法