Los bucles for basados en rangos son una versión mejorada de los bucles for. Es bastante similar a los bucles que se usan en Python. El bucle for basado en rango en C++ se agrega desde C++ 11.
Podemos revertir el proceso de iteración del ciclo usando la función boost::adaptors::reverse() que se incluye en el encabezado de la biblioteca boost .
Archivo de cabecera:
#include <boost/range/adaptor/reversed.hpp>
Sintaxis:
for (auto i : boost::adaptors::reverse(x))
Parámetros:
- range_declaration: una declaración utilizada para iterar sobre los elementos en un contenedor . A menudo utiliza el especificador automático para la deducción automática de tipos.
- range_expression: una expresión que representa una secuencia adecuada o una lista de inicio entre llaves.
- loop_statement: Una declaración, normalmente una declaración compuesta, que es el cuerpo del ciclo.
A continuación se muestra el programa para ilustrar el bucle basado en rango inverso en C++:
CPP14
// C++ program for reverse // range-based for loop #include <bits/stdc++.h> // For reversing range based loop #include <boost/range/adaptor/reversed.hpp> using namespace std; // Driver Code int main() { string s = "geeksforgeeks"; int y[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; vector<int> v1{ 1, 2, 3, 4, 5, 6, 7, 8 }; // Reverse range-based for loop // to reverse string for (auto x : boost::adaptors::reverse(s)) cout << x << " "; cout << endl; // Reverse range-based for loop // to reverse array for (auto x : boost::adaptors::reverse(y)) cout << x << " "; cout << endl; // Reverse range-based for loop // to reverse vector for (auto x : boost::adaptors::reverse(v1)) cout << x << " "; cout << endl; return 0; }
Producción:
s k e e g r o f s k e e g 8 7 6 5 4 3 2 1 8 7 6 5 4 3 2 1