好吧,事情是这样的:我有一个大小为 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/