Vous avez obtenu un certain nombre de réponses déjà, mais je ne peux pas vraiment d'accord avec l'un d'eux. Quelques-uns viennent assez proche de la marque, mais ne parviennent pas à mentionner le point crucial (OMI, bien sûr).
Au moins pour moi, le point crucial est assez simple: vous devez utiliser les algorithmes standards lorsqu'ils aident à clarifier le code que vous écrivez.
C'est vraiment aussi simple que cela. Dans certains cas, ce que vous faites exigerait une arcane invocation à l'aide de std::bind1st
et std::mem_fun_ref
(ou quelque chose dans cet ordre) qui est extrêmement dense et opaque, où un for
boucle serait presque trivialement simple et directe. Dans ce cas, aller de l'avant et à l'utilisation de l' for
boucle.
Si il n'y a pas d'algorithme standard qui fait ce que vous voulez, prenez un peu de soin et de regarder à nouveau -- vous aurez souvent à côté de quelque chose qui va vraiment faire ce que vous voulez (un endroit qui est souvent oubliée: les algorithmes en <numeric>
sont souvent utiles pour les non-numérique utilise). Ayant regardé une couple de fois, et a confirmé qu'il n'y a vraiment pas un algorithme standard de faire ce que vous voulez, au lieu d'écrire que for
boucle (ou autre) en ligne, envisager d'écrire un algorithme générique pour faire ce que vous devez faire. Si vous utilisez un seul endroit, il ya une assez bonne chance que vous pouvez l'utiliser de deux ou trois de plus, à quel point il peut être une grande victoire dans la clarté.
L'écriture des algorithmes génériques n'est pas difficile, en fait, il est souvent presque pas de travail supplémentaire par rapport à l'écriture d'une boucle à la volée, de sorte que même si vous ne pouvez l'utiliser que deux fois, vous êtes déjà d'économiser un peu de travail, même si vous ignorez l'amélioration dans le code de la lisibilité et de la clarté.