私は共有ポインタのセットを持っています:
std::set<boost::shared_ptr<T>> set;
そしてポインタ:
T* p;
に等しい要素を効率的に削除したいのですが、はとはまったく異なるタイプであるため、セットのメンバーや標準アルゴリズムのいずれでもこれを行うことはできません。set
p
T*
boost::shared_ptr<T>
私が考えることができるいくつかのアプローチは次のとおりです。
- どういうわけか、ポイントされたメモリの所有権を取得しないポインタから新しいshared_ptrを構築します(理想的な解決策ですが、これを行う方法がわかりません)
- 上記を実行できるように、shared_ptrをラッピング/再実装します
- セットに対して独自のバイナリ検索を実行するだけです