小编ran*_*dom的帖子

从STL容器中删除元素时是否调用析构函数?

假设我有两个容器存储指向同一对象的指针:

std::list<Foo*> fooList;
std::vector<Foo*> fooVec;
Run Code Online (Sandbox Code Playgroud)

假设我从其中一个容器中移除一个对象,如果它的方法是:

std::vector<Foo*>::iterator itr = 
  std::find( fooVec.begin(), fooVec.end(), pToObj );
fooVec.erase( itr );
Run Code Online (Sandbox Code Playgroud)

CppReference说这会调用对象的析构函数.这是否意味着指向对象的指针fooList是悬空指针?

我不想使用引用计数指针.如何处理这个问题?

c++ pointers stl dangling-pointer

3
推荐指数
1
解决办法
2611
查看次数

标签 统计

c++ ×1

dangling-pointer ×1

pointers ×1

stl ×1