我有一组共享指针:
std::set<boost::shared_ptr<T>> set;
和一个指针:
T* p;
我想有效地set
删除等于的元素p
,但我不能对 set 的任何成员或任何标准算法执行此操作,因为T*
它与boost::shared_ptr<T>
.
我能想到的几种方法是:
- 以某种方式从指针构造一个新的 shared_ptr ,该指针不会获得指向内存的所有权(理想的解决方案,但我看不到如何做到这一点)
- 包装/重新实现 shared_ptr 以便我可以执行上述操作
- 只是对集合进行我自己的二进制搜索