Je suis tombé sur une série de diapositives pour une diatribe parler sur le C++. Il y avait quelques détails intéressants ici et là, mais diapositive 8 se présentait à moi. Son contenu a été, environ:
Constante évolution styles
Vieux et cassé:
for (int i = 0; i < n; i++)
Nouveau hotness:
for (int i(0); i != n; ++i)
Je n'avais jamais vu un for
boucle à l'aide de la deuxième forme avant, de sorte que l'affirmation qu'il était le "Nouveau hotness" m'ont intéressé. Je peux voir quelques justification:
- Directe d'initialisation à l'aide d'un constructeur vs copie d'initialisation
-
!=
pourrait être plus rapide dans le matériel qu'<
-
++i
ne nécessite pas le compilateur de garder l'ancienne valeur dei
environ, ce qui est lei++
le ferait.
J'imagine que c'est de l'optimisation prématurée, cependant, que les modernes l'optimisation des compilateurs de dresser les deux vers le bas pour les mêmes instructions; si quoi que ce soit, ce dernier est pire parce qu'il n'est pas "normal" for
boucle. À l'aide de !=
au lieu de <
est également suspect pour moi, parce qu'il fait la boucle sémantiquement différente de la version originale, et peut conduire à quelques rares, mais intéressant, de bugs.
Y avait-il un point où la "Nouvelle hotness" version de l' for
boucle était populaire? Est-il une raison pour utiliser cette version de ces jours (2016+), par exemple inhabituel de la boucle types de variables?