Comment utiliser un vecteur de pointeur unique?

J’utilise le vector<unique_ptr> pour stocker mes données pour sa gestion automatique de la mémoire et son faible coût en unique_ptr . J’ai une fonction pour essayer d’y append de nouvelles données créées. Les données peuvent être vraiment ajoutées ou non. Si on l’ajoute, je n’ai pas besoin de me soucier de sa suppression de mémoire car le vecteur pointeur s’en chargera. Si ce n’est pas ajouté, j’espère que les nouvelles données créées pourront être supprimées automatiquement. Un moyen simple de le mettre en œuvre? La fonction peut ressembler à ci-dessous ou à d’autres formes similaires. Merci.

 // Return true if really added, return flase if not. bool add(vector<unique_ptr>& vec, Data* newData); 

En se basant sur la réponse de Dave, bool add(vector<unique_ptr>& vec, std::unique_ptr& newData) meilleur puisque unique_ptr n’est pas copiable en public? Ici, une référence est utilisée dans le 2ème argument.

Acceptez newData comme unique_ptr également.

 bool add(vector>& vec, std::unique_ptr newData) { if(blah blah blah) { vec.push_back(std::move(newData)); return true; } return false; } 

Quelle est la sémantique que vous souhaitez atteindre.

FWIW: un vecteur unique_ptr est rarement une bonne idée. Si vous souhaitez que le vecteur soit la propriété exclusive, utilisez plutôt le vecteur de pointeur de Boost.