Plus élégante façon de boucle sur une plage de nombres entiers

Depuis C++11 introduit la gamme de boucle (basés sur la plage, pour en c++11), ce qui est la plus élégante façon de l'exprimer en boucle sur une plage de nombres entiers?

Au lieu de

for (int i=0; i<n; ++i)

Je voudrais écrire quelque chose comme

for (int i : range(0,n))

Le nouveau support de la norme de quelque chose de ce genre?

Mise à jour: cet article décrit comment mettre en œuvre une gamme de générateur en C++11: Générateur en C++

  • Pourquoi voulez-vous faire une boucle sur une plage d'entiers en premier lieu?
  • êtes-vous sérieux? En boucle sur une plage de nombres entiers est (je suis à peu près certain) dans chaque pièce de source C qui n'est pas un simple HelloWorld programme. Ou vouliez-vous dire: pourquoi voudriez-vous d'utiliser la gamme à base de for pour qui?
  • Je suis mort de grave. Donnez-moi une bonne raison pour faire une boucle sur une plage de nombres entiers. Utilisez-vous les entiers de l'indice de quelque chose? Boucle / itération sur que quelque chose à la place. Explicite, les boucles sont très sujettes à l'erreur. La seule fois où je les utiliser efficacement est pour indice de référence des boucles.
  • Coup de pouce.La gamme a irange.
  • Source C est pas pertinent. La question clairement, explicitement concerne C++11.
  • Je reçois de vous maintenant. Vous avez un bon point, sauf pour un petit cas d'utilisation (que j'ai découvert dans de nombreux for/foreach questions). Parfois, vous avez besoin de savoir l'index. Accordé que c'est probablement un petit cas d'utilisation, mais je peux envisager un couple de choses qui pourraient en avoir besoin - l'autre jour, j'ai eu mon garçon de faire un 12-tableau des temps de programme mais pas en C++ parce que je pense que ce serait un châtiment cruel pour un 9yo 🙂
  • Il y a eu de nombreuses fois où j'ai eu besoin de faire une boucle sur une plage de nombres entiers, si pour aucune autre raison que de faire une boucle sur un conteneur, et d'avoir accès à l'index en même temps.
  • C'est lorsque vous zip gamme vous êtes discuterons avec une infinie intervalle entier. Douloureux en C++, mais c'est du C++.
  • Voir les deux commentaires ci-dessus.
  • Ouais exactement, C code. Juste que cette question n'est pas sur C, qui ne dispose pas d'une large base pour, de toute façon. Si je suis d'accord qu'il y a en effet des cas d'utilisation pour l'itération sur une plage de nombres entiers, tout simplement pas que beaucoup de comme en C (et ça fait mal à chaque fois que j'ai besoin d'utiliser un indice de boucle au lieu d'un itérateur en boucle ;), mais c'est peut être juste).

InformationsquelleAutor user1101674 | 2013-02-26