我有一个指向类中其他“对象”的指针 vector 。
在这些对象之一被删除之后/当这些对象之一被删除后,是否有任何方法可以从 vector 中删除可能指向它的任何指针?
最好的办法是以某种方式传播删除,但是只要遍历 vector 就知道对象已被删除也是可以的。
最佳答案
不要使用 Vanilla 指针。使用类(class) std::shared_ptr
和 std::weak_ptr
相反。
这些类实现了自动内存管理。当您不再需要某个对象时,您不会删除该对象,而是删除所有引用该对象的 shared_ptr
。只有当一个对象的 shared_ptr
不再存在时,实际的对象才会被删除。
任何仍然存在的 weak_ptr
都将返回一个评估为 false
的对象。发生这种情况时,您就知道可以从 vector 中删除 weak_ptr
。
关于c++ - 如何删除传播或检测到的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24178829/