Declaration de variables [Résolu]

Signaler
Messages postés
88
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
Bonjour, je cherche à faire qqch de tres simple : créer un std::vector<double> dans un constructeur de classe.

J'ai essayé

MaClasse::MaClasse
{
monvecteur= new std::vector<double> //pour le faire dynamiquement mais ça ne marche pas
}

1.Quel est la syntaxe ?
2. Comment le faire statiquement
3.Sachant que mon but est de faire des pushback au fur et a mesure du programme quel est la meilleur facon

wis : in tartiflette I trust (like the others)

6 réponses

Messages postés
88
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Tout a fait dac pour la reallocation de la memoire, ce qui m'a d'ailleurs embeté par le passé.
Merci de ces infos laurent

++

wis : in tartiflette I trust (like the others)
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
1 Dynamiquement :

std::vector<double> * b = new std::vector<double>;

2 Statiquement

std::vector<double> mon vector;

3 pour choisir le bon conteneur

 http://c.developpez.com/faq/cpp/?page=STL#STL_choix_conteneur


++
Messages postés
88
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Merci beaucoup, c'est ma foi bien ce que je pensais, j'ai corrigé depuis, néanmoins une chose m'intrigue, quand je declare un
std::vector<double> monvector, que fait il ? est ce qu'il crée un vecteur vide ? ou est ce qu'il reserve un vecteur de XXX elements ?

wis : in tartiflette I trust (like the others)
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
Par defaut, il doit reserve une place par defaut: Tu
dois pouvoir le lui presiser en faisait std::vector<double>
monvector(500);

ou apres la creation tu peut faire
// réserver (allouer) de la place pour au moins 50 éléments
monvector.reserve( 50 );

Si tu lui precise rien, il va ce debrouiller tout seul
( si tu fais un push_back et qu'il y a plus assez de place, il realloue de la memoire)

++
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
Regarde le fonctionnement des deque, c'est une
structrure assez sympa, tu as un acces indexé ( operateur [] ), avec
ajout et suppression de liste rapide, et il n'y a pas de reallocation
car c'est une sorte de liste.


++
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
3
1.

MaClasse::MaClasse

: monvecteur( /* 1 arg ou appel explicite */ )

{


}


3. Comme ca à déjà été dit, reserve permet de réserver de l'espace mais
n'est pas obligatoire, ca permet cependant d'éviter de trop nombreuses
réallocations en réservant une estimation du nombre d'élément à insérer.