L'initialisation d'un std::vector avec le constructeur par défaut
J'ai un champ de classe qui est un std::vector. Je sais combien les éléments que je veux ce vecteur contient: N. Comment initialiser le vecteur de N éléments?
Faites-vous référence à l'initiale taille ou à la capacité?
Taille initiale, je suppose. Je n'ai pas tout suivi. Êtes-vous référant à l'aide de réserve() pour une capacité de réserve?
Oui, je le suis. Laissez-moi le dire d'une autre manière: vous voulez que votre vecteur initial des éléments N, ou voulez-vous votre vecteur d'être en mesure de croître à N éléments sans réaffectation?
Au départ de N éléments, les réponses ci-dessous par James et Jerry étaient exactement ce que je cherchais.
Taille initiale, je suppose. Je n'ai pas tout suivi. Êtes-vous référant à l'aide de réserve() pour une capacité de réserve?
Oui, je le suis. Laissez-moi le dire d'une autre manière: vous voulez que votre vecteur initial des éléments N, ou voulez-vous votre vecteur d'être en mesure de croître à N éléments sans réaffectation?
Au départ de N éléments, les réponses ci-dessous par James et Jerry étaient exactement ce que je cherchais.
OriginalL'auteur Himadri Choudhury | 2011-03-14
Vous devez vous connecter pour publier un commentaire.
std::vector
a un constructeur déclaré:Vous pouvez l'utiliser pour construire le
std::vector
contenantN
des copies dex
. La valeur par défaut pourx
est une valeur initialiséeT
(siT
est un type de classe avec un constructeur par défaut puis de la valeur d'initialisation par défaut est de construction).Il est simple pour initialiser un
std::vector
membre de données à l'aide de ce constructeur:emplace_back
.Ainsi, un élément de la valeur par défaut est construit ici :-). Dans C++0x, le constructeur que je mentionne est en fait deux constructeurs:
vector(size_type N)
etvector(size_type N, const T& x)
. La première valeur initialise leN
éléments et ne pas appeler toute copie des constructeurs. Leresize
fonction a de même été divisé en deux surcharges.Le paramètre par défaut est construit, mais il n'est pas un élément du vecteur. Bon à savoir qu'en C++0x, il y a maintenant deux implémentations au lieu d'un argument par défaut.
OriginalL'auteur James McNellis
OriginalL'auteur Jerry Coffin
Tous les constructeurs qui vous permettent de spécifier une taille aussi invoquer l'élément du constructeur. Si l'efficacité est primordiale, vous pouvez utiliser le
reserve()
fonction de membre de la réserve de la taille. Ce n'est pas réellement créer tous les éléments, il est donc plus efficace. Dans la plupart des cas, cependant, la fourniture de la taille par le vecteur constructeur est tout simplement parfait.OriginalL'auteur dappawit