Array reversa em C++
-
Utilizar
vector
Construtor com base na gama para inverter um array em C++ -
Utilize a função
std::reverse
para inverter a matriz em C++ -
Use os iteradores
rbegin
/rend
para reverter array em C++
Este artigo irá explicar vários métodos de como inverter um array em C++.
Utilizar vector
Construtor com base na gama para inverter um array em C++
O contentor vector
apoia o construtor com a gama especificada pelos iteradores. Assim, podemos declarar uma nova variável vector
e inicializá-la com valores invertidos do primeiro vector utilizando iteradores rbegin
/rend
.
Note-se que também declaramos uma função PrintVector
para manter o clone arrumado e produzir conteúdo vector
numa única chamada de função. Uma desvantagem deste método é que requer a construção de uma nova variável de array, que pode ser desnecessária em certos cenários.
#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;
Utilize a função std::reverse
para inverter a matriz em C++
Alternativamente, para inverter os elementos do array sem declarar outras variáveis, podemos chamar a função std::reverse
a partir da biblioteca padrão. A função std::reverse
faz parte do cabeçalho <algorithm>
e faz parte da biblioteca padrão desde a C++17. A função toma o start/end
iteradores da gama como argumentos da função e troca os elementos no lugar. O vector sobre o qual std::reverse
foi chamado é modificado permanentemente, e qualquer acesso consequente aos seus elementos resulta numa nova ordenação.
#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;
Use os iteradores rbegin
/rend
para reverter array em C++
Em contraste com o primeiro exemplo deste tópico, existem casos de utilização em que o conteúdo reordenado do vector
não precisa de ser armazenado no fluxo do programa, mas apenas emitido para consola ou visualização. O exemplo seguinte demonstra como imprimir os elementos do array para consola em ordem inversa e sem modificar o conteúdo variável subjacente.
#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