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 :
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*/
}
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.

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.
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
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 ?

Qu'en pensez vous