如何传播或检测对象的删除



我有一个指向类中其他"对象"的指针向量。

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

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

不要使用普通指针。使用std::shared_ptrstd::weak_ptr类代替。

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

任何仍然存在的weak_ptr将返回一个计算为false的对象。当这种情况发生时,你知道weak_ptr可以从矢量中删除。

这就是std::weak_ptr存在的原因。它不会停止删除,但会检测到。

最新更新