Invertire un array in C++
-
Usa il Costruttore basato su intervallo
vector
per invertire l’array in C++ -
Usa la funzione
std::reverse
per invertire l’array in C++ -
Usa gli iteratori
rbegin
/rend
per invertire l’array in C++
Questo articolo spiegherà diversi metodi su come invertire un array in C++.
Usa il Costruttore basato su intervallo vector
per invertire l’array in C++
Il contenitore vector
supporta il costruttore con l’intervallo specificato dagli iteratori. Quindi, possiamo dichiarare una nuova variabile vector
e inizializzarla con valori invertiti dal primo vettore usando gli iteratori rbegin
/ rend
.
Notare che dichiariamo anche una funzione PrintVector
per mantenere ordinato il clone e visualizzare i contenuti vector
in una singola chiamata di funzione. Uno svantaggio di questo metodo è che richiede la creazione di una nuova variabile di matrice, che può essere un sovraccarico non necessario in determinati scenari.
#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;
}
Produzione:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Usa la funzione std::reverse
per invertire l’array in C++
In alternativa, per invertire gli elementi dell’array in posizione senza dichiarare altre variabili, possiamo chiamare la funzione std::reverse
dalla libreria standard. std::reverse
fa parte dell’intestazione <algorithm>
e fa parte della libreria standard sin dal C++ 17. La funzione accetta gli iteratori inizio / fine
dell’intervallo come argomenti della funzione e scambia gli elementi al loro posto. Il vettore su cui è stato chiamato std::reverse
viene modificato in modo permanente, e ogni conseguente accesso ai suoi elementi risulta in un nuovo ordinamento.
#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;
}
Produzione:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Usa gli iteratori rbegin
/ rend
per invertire l’array in C++
In contrasto con il primo esempio di questo argomento, ci sono casi d’uso in cui il contenuto riordinato del vettore
non deve essere memorizzato nel flusso del programma, ma semplicemente inviato alla console o al display. L’esempio seguente mostra come stampare gli elementi dell’array sulla console in ordine inverso e senza modificare il contenuto delle variabili sottostanti.
#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;
}
Produzione:
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