c++ - 如何删除传播或检测到的对象?

标签 c++ pointers

我有一个指向类中其他“对象”的指针 vector 。

在这些对象之一被删除之后/当这些对象之一被删除后,是否有任何方法可以从 vector 中删除可能指向它的任何指针?

最好的办法是以某种方式传播删除,但是只要遍历 vector 就知道对象已被删除也是可以的。

最佳答案

不要使用 Vanilla 指针。使用类(class) std::shared_ptrstd::weak_ptr相反。

这些类实现了自动内存管理。当您不再需要某个对象时,您不会删除该对象,而是删除所有引用该对象的 shared_ptr。只有当一个对象的 shared_ptr 不再存在时,实际的对象才会被删除。

任何仍然存在的 weak_ptr 都将返回一个评估为 false 的对象。发生这种情况时,您就知道可以从 vector 中删除 weak_ptr

关于c++ - 如何删除传播或检测到的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24178829/

相关文章:

c++ - include <sstream> 在 Xcode 9.2 中不起作用

c++ - EasyBMP c++ 的 RGBApixel 内存问题

c++ - 图结构——指针不好吗?

python - Python 中的列表指针

c++ - 从类型 ‘void*’ 到函数指针的强制转换无效

c++ - 错误 : expected primary-expression before ']' token

c++ - Netbeans 显示 unix 系统调用错误 "getcontext"

C++ 通过重定向 cout 将 stdout 复制到文件

c++ - 使用指针替换 C 字符串中的字符

c++ - 为什么我们不能在栈上分配动态内存?