myVector.erase(myObject)是否在myObject上调用delete?

JnB*_*ymn 4 c++ containers pointers

此问题类似,但使用对象而不是指针.

如果我有以下代码

Foo f;
vector<Foo> vect;
vect.push_back(f);
vect.erase(vect.begin());
Run Code Online (Sandbox Code Playgroud)

我的对象去哪儿了?删除是否被调用?如果其他人持有指向它的指针怎么办?这是内存泄漏吗?

fre*_*low 8

push_back存储拷贝f在载体中,并erase破坏它.f本身不受此影响.

向量中的元素的所有指针,引用和迭代器都会失效erase.在erase产生未定义的行为之后使用它们来访问元素.