我有一组共享指针:
std::set<boost::shared_ptr<T>> set;
还有一个指针:
T* p;
我想要高效地移除等于“p”的
set
元素,但我不能使用任何集合成员或标准算法来完成此操作,因为T*
是一种与boost::shared_ptr<T>
完全不同的类型。我能想到几种方法:
- 以某种方式从指针构造一个新的shared_ptr,而不会拥有指向的内存(理想的解决方案,但我不知道如何实现)
- 包装/重新实现shared_ptr以便我可以执行上述操作
- 自己在集合上进行二进制搜索