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)
我的对象去哪儿了?删除是否被调用?如果其他人持有指向它的指针怎么办?这是内存泄漏吗?
push_back存储拷贝的f在载体中,并erase破坏它.f本身不受此影响.
向量中的元素的所有指针,引用和迭代器都会失效erase.在erase产生未定义的行为之后使用它们来访问元素.