Je viens d'écrire un algorithme qui utilise notamment un vector pour effectuer un marquage d'éléments dans une boucle.
Une première version de cet algo est la suivante :
Comme je n'utilise le vector que dans la boucle, je l'ai déclaré à l'intérieur en suivant la règle qui veut qu'on réduise la portée de l'existence des variables au maximum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int i; for(i=0;i<MAX;i++) { vector<int> marked(nb_elems,-1); /*.. lot of thing*/ /*.. lot of thing*/ }
Tout marche correctement mais en vue d'une optimisation j'aimerai savoir si la version suivante n'est pas plus rapide et/ou moins gourmande en terme de mémoire.
Contrairement au code précédent, je n'alloue qu'une seule fois marked au début. Puis éventuellement sur un resize si la taille à changé. Est-ce correct ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 { vector<int> marked(nb_elems,-1); int i; for(i=0;i<MAX;i++) { marked.resize(nb_elems,-1);//nb_elems peut varié /*.. lot of thing*/ /*.. lot of thing*/ } }//fin de portée du vector
Qu'en pensez vous![]()
Partager