variable tipos tipo rangos que programacion long float derivados datos dato c++ c++11

c++ - rangos - tipos de datos en java



¿La mejor forma de recorrer un rango de enteros? (3)

Esta pregunta ya tiene una respuesta aquí:

Dado que C ++ 11 introdujo el bucle para basado en rango ( basado en rango para en c ++ 11 ), ¿cuál es la mejor manera de expresar el bucle en un rango de enteros?

En lugar de

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

Me gustaria escribir algo asi

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

¿El nuevo estándar soporta algo de ese tipo?

Actualización : este artículo describe cómo implementar un generador de rango en C ++ 11: Generador en C ++


Dependiendo de lo que tenga que hacer con el entero, considere también el encabezado <numeric> , en particular std::iota junto con std :: transform y std :: fill, según los casos.


La mejor manera es esta:

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

Supongo que puedes hacer esto, pero no lo llamaría tan limpio:

#include <iostream> int main() { for ( auto i : { 1,2,3,4,5 } ) { std::cout<<i<<std::endl; } }


Si bien no puede hacerlo con C ++ puro (con las capacidades actuales de la biblioteca estándar de C ++), puede hacerlo con la ayuda de boost:

#include <boost/range/irange.hpp> #include <iostream> using namespace boost; using namespace std; int main(int argc, char **argv) { for(auto i : irange(1, 10)) cout << i << "/n"; return 0; }

además, Boost.Range contiene algunos rangos más interesantes que podría encontrar bastante útiles cuando se utiliza con el nuevo bucle for . Por ejemplo, con Boost.Range puede hacer un ciclo inverso for .