J'ai un ensemble de pointeurs partagés:Retirer du std :: set <shared_ptr <T>> T *
std::set<boost::shared_ptr<T>> set;
Et un pointeur:
T* p;
Je voudrais efficacement supprimer l'élément de set
égal à p
, mais je ne peux pas le faire avec l'un des membres de l'ensemble, ou l'un des algorithmes standard, puisque T*
est un type complètement différent de boost::shared_ptr<T>
.
Quelques approches que je peux penser sont:
- construire en quelque sorte une nouvelle shared_ptr du pointeur qui ne prendra pas la propriété de la pointe à la mémoire (solution idéale, mais je ne vois pas comment faire)
- emballage/re-mise en œuvre shared_ptr afin que je puisse faire le
- ci-dessus juste faire ma propre recherche binaire sur l'ensemble
Pourquoi avez-vous ce pointeur T brut de toute façon? – dalle
Pourquoi pas? Je me retrouve souvent avec des pointeurs intelligents dans la classe 'Factory' et seulement des pointeurs/références bruts à l'extérieur. L'extérieur n'a pas besoin de savoir comment je gère mes objets. –