Invertire un array in C++

Jinku Hu 12 ottobre 2023
  1. Usa il Costruttore basato su intervallo vector per invertire l’array in C++
  2. Usa la funzione std::reverse per invertire l’array in C++
  3. Usa gli iteratori rbegin / rend per invertire l’array in C++
Invertire un 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;
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Articolo correlato - C++ Array