9
votes

Boost.Pointer Conteneur fait obsolète par STD :: unique_ptr en C ++ 11/14?

fait std :: unique_ptr marque boost.pointer conteneur bibliothèque obsolète en C ++ 11/14?

in c ++ 98/03 Il n'y a pas de sémantique de déplacement, et un pointeur intelligent comme Shared_PTR a une référence-comptage de référence associé surhead (les deux pour le bloc de comptage REF et les les les les sont comparés aux points brut. Alors quelque chose comme std :: vecteur > a une dépannie si comparé au std :: vecteur . . .

mais est std :: vecteur > juste comme efficace comme std :: vecteur (pas de références comptant les frais généraux), et en outre coffre-fort en ce qui concerne les exceptions et la destruction automatique (c.-à-d. vecteur > destructeur automatiquement appelle les destructeurs destructeurs pour les éléments t dont les pointeurs sont stockés dans le vecteur

Si tel est le cas, Boost.Pointer conteneur a toujours un lieu utile valide dans le code C ++ 11/14, ou est-ce juste obsolète?


0 commentaires

3 Réponses :


10
votes

Ce n'est pas obslete; il a un complètement différent et plus Interface intuitive que std :: vecteur > .


1 commentaires

Il y a longtemps, mais ... pouvez-vous élaborer?



6
votes

Comme James mentionne dans sa réponse, les conteneurs Boost.Poinger offrent une interface plus intuitive par rapport à ce que vous obtenez en collant un unique_ptr dans un conteneur de bibliothèque standard.

Mis à part cela, boost :: pTR_Vector (and amis) stocke le signal de type comme un vide * en dessous, donc vous n'obtenez pas de Instanciation de modèle de classe complète pour chaque t . Ce n'est pas le cas avec vecteur > .


1 commentaires

Le void * hosting était également une "optimisation connue" pour réduire les instanciations de modèle pour std :: vecteur , mais ni l'actuel libc ++ ni l'actuel libstDC ++ ne l'utilise optimisation plus. Voir Cette réponse par @jonathanwakely.



1
votes

Essayez d'utiliser std :: vecteur > xxx

boost.Pointer conteneur a certainement plus d'interface intuitive.


0 commentaires