如果我有一个
必须向
很明显
我正在考虑使用
管理器会通知子类对象的创建和删除,使
vector<weak_ptr<Type>>
,我不能使用vector::erase(remove())
来移除所需的weak_ptr
,因为它没有一个比较运算符==。必须向
remove_if
传递一个lambda谓词,用于比较通过weak_ptr::_Get()
访问的基础原始指针,以便在vector::erase(remove_if())
中删除。
_Get()
以下划线和大写字母开头,这意味着它是为实现保留的,不应该由用户访问。很明显
weak_ptr
不应该以这种方式存储,但为什么呢?
我正在考虑使用
vector<weak_ptr<>>
在管理类中只有一些需要进一步处理的对象的子类中保存weak_ptr
,并通过lock()
确保它们在多线程应用程序中未被管理类删除。管理器会通知子类对象的创建和删除,使
vector<weak_ptr<>>
保持最新。
==
比较什么?相同的weak_ptr
?还是不同的weak_ptr
指向同一个对象?或者是指向不同对象但值相同的weak_ptr
? - Galika.lock() == b.lock()
,而不是依赖于内部实现细节。 - Igor Tandetnikweak_ptr
实例旁边保留某种形式的它。 - Igor Tandetnik