Revertir el array en C++
-
Usar el constructor basado en el rango
vector
para revertir un array en C++ -
Usa la función
std::reverse
para revertir el array en C++ -
Usar los iteradores
rbegin
/rend
para revertir el array en C++
Este artículo explicará varios métodos de cómo revertir un array en C++.
Usar el constructor basado en el rango vector
para revertir un array en C++
El contenedor vector
apoya al constructor con el rango especificado por los iteradores. Por lo tanto, podemos declarar una nueva variable vector
e inicializarla con valores invertidos del primer vector usando los iteradores de rbegin
y rend
.
Observa que también declaramos una función PrintVector
para mantener el clon ordenado y el contenido de la salida vector
en una sola llamada a la función. Una desventaja de este método es que requiere la construcción de una nueva variable de array, lo que puede ser una sobrecarga innecesaria en ciertos escenarios.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;
void PrintVector(vector<int> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
}
int main() {
vector<int> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<int> arr1_reversed(arr1.rbegin(), arr1.rend());
PrintVector(arr1_reversed);
return EXIT_SUCCESS;
}
Resultado:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Usa la función std::reverse
para revertir el array en C++
Alternativamente, para invertir los elementos del array en su lugar sin declarar otras variables, podemos llamar a la función std::reverse
de la biblioteca estándar. std::reverse
es parte de la cabecera <algorithm>
y ha sido parte de la biblioteca estándar desde el C++17. La función toma los iteradores start/end
del rango como argumentos de la función e intercambia los elementos en su lugar. El vector sobre el que se ha llamado std::reverse
se modifica permanentemente, y cualquier acceso consecuente de sus elementos resulta en un nuevo orden.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::reverse;
using std::vector;
void PrintVector(vector<int> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
}
int main() {
vector<int> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
reverse(arr1.begin(), arr1.end());
PrintVector(arr1);
return EXIT_SUCCESS;
}
Resultado:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Usar los iteradores rbegin
/rend
para revertir el array en C++
A diferencia del primer ejemplo de este tema, existen casos de uso en los que el contenido reordenado del vector
no necesita ser almacenado en el flujo del programa, sino que sólo se envía a la consola o a la pantalla. El siguiente ejemplo demuestra cómo imprimir los elementos del array a la consola en orden inverso y sin modificar los contenidos variables subyacentes.
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;
void PrintVector(vector<int> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, "; "));
cout << endl;
}
int main() {
vector<int> arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
copy(arr1.rbegin(), arr1.rend(), ostream_iterator<int>(cout, "; "));
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook