break; C++: quelle boucle est-il en train de tomber

simple question concernant le code C++:

for(int i=0;i<npts;i++)
{
    for(int j=i;j<2*ndim;j++)
    {
        if(funcEvals[i]<bestListEval[j])
        {
            bestListEval[j] = funcEvals[i];
            for(int k=0;k<m_ndim;k++)
                bestList[j][k] = simplex[i][k]; 
            break; 
        }
    }
}

Je veux m'assurer que

  • Chaque ligne de double **simplex est inséré au plus une fois dans double **bestList
  • L'instance de break ici éclate de la seconde (intérieure) for boucle.

Est-ce le cas?

Oui, c'est sortir de la seconde for boucle.
break toujours éclate de l'intérieur de la structure en boucle (ou switch) actif à ce point dans le code (dans ce cas, le for (j ... boucle).
Pause toujours les sauts les plus intimes de la boucle. Si vous voulez sortir de plus que ce que vous avez besoin d'avoir un bool ou quelque chose à garder une trace de quand de continuer ou pas.
Le break déclaration sera TOUJOURS le cas si funcEvals[i]<bestListEval[j] est true. Vous devriez vraiment utiliser certains des meilleurs noms de variables.
Ajout de "C" tag depuis que la question est pertinente pour le C et le code est écrit en C.

OriginalL'auteur octoback | 2012-05-14