c++ - 如果我在指向 vector 空元素的迭代器上调用方法,会发生什么?

标签 c++ vector

好吧,事情是这样的:我有一个大小为 0 的 vector ,它将填充指针(使用 vector::push_back),并且在我的程序中的某个时刻,我需要释放 vector 的元素并清除 vector 本身。

问题是,稍后我需要用一些新的指针填充 vector ,我担心如果指针的数量小于 vector 的实际大小(在我清除它之后)会发生什么并且我在指向数组末尾的那些空元素之一的迭代器上调用一个方法。

这会是未定义的行为吗?如果不是,会发生什么?

最佳答案

来自 std::vector::clear ( http://www.cplusplus.com/reference/vector/vector/clear/ ) 的文档:

Iterator validity

All iterators, pointers and references related to this container are invalidated.

您会发现这个特定的文档站点包含有关容器操作如何影响指向容器中元素的迭代器的有效性的注释(标题为“迭代器有效性”)。

关于c++ - 如果我在指向 vector 空元素的迭代器上调用方法,会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538526/

相关文章:

c++ - 为什么 vector.reserve(2) 后跟 v[0] = 2 被认为是不正确的?

C++ FIR 噪声滤波器

c++ - 抑制 SSL 错误

pointers - vector <list <T >>是否保证元素地址保持不变?

c++ - 调试断言 : Vector iterators incompatible (C++)

r - 当您提前不知道长度时如何在 R 中创建向量?

c++ - 这是内存泄漏吗?试图重置类型类的类成员。 C++

c++ - QT从文本文件中读取数据

c++ - 更新 Qlabel 文档矩形调用的标签不是文本标签。为什么?

python - 如何告诉 MATLAB 我正在导入的数据是一系列向量,而不仅仅是一系列字母?