Array umkehren in C++

Jinku Hu 12 Oktober 2023
  1. Umkehrung eines Arrays in C++ mit dem Konstruktor vector auf Basis des Bereichs
  2. Verwenden der Funktion std::reverse zum Umkehren von Array in C++
  3. Verwendung von rbegin/rend-Iteratoren zur Umkehrung eines Arrays in C++
Array umkehren in C++

In diesem Artikel werden mehrere Methoden erläutert, wie man ein Array in C++ umkehren kann.

Umkehrung eines Arrays in C++ mit dem Konstruktor vector auf Basis des Bereichs

Der Container vector unterstützt Konstruktoren mit dem durch Iteratoren angegebenen Bereich. Daher können wir eine neue vector-Variable deklarieren und sie mit umgekehrten Werten aus dem ersten Vektor unter Verwendung von rbegin/rend-Iteratoren initialisieren.

Beachten Sie, dass wir auch eine Funktion PrintVector deklarieren, um den Klon aufgeräumt zu halten und den Inhalt von vector in einem einzigen Funktionsaufruf auszugeben. Ein Nachteil dieser Methode ist, dass sie die Konstruktion einer neuen Array-Variablen erfordert, was in bestimmten Szenarien unnötigen Overhead bedeuten kann.

#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;
}

Ausgabe:

10; 9; 8; 7; 6; 5; 4; 3; 2; 1;

Verwenden der Funktion std::reverse zum Umkehren von Array in C++

Alternativ können wir, um die Array-Elemente an Ort und Stelle umzukehren, ohne andere Variablen zu deklarieren, die Funktion std::reverse aus der Standardbibliothek aufrufen. std::reverse ist Teil des <algorithm>-Headers und ist seit C++17 Teil der Standardbibliothek. Die Funktion nimmt Start/Ende-Iteratoren des Bereichs als Funktionsargumente und vertauscht die Elemente an ihrer Stelle. Der Vektor, auf dem std::reverse aufgerufen wurde, wird permanent verändert, und jeder nachfolgende Zugriff auf seine Elemente führt zu einer neuen Reihenfolge.

#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;
}

Ausgabe:

10; 9; 8; 7; 6; 5; 4; 3; 2; 1;

Verwendung von rbegin/rend-Iteratoren zur Umkehrung eines Arrays in C++

Im Gegensatz zum ersten Beispiel dieses Themas gibt es Anwendungsfälle, in denen der neu geordnete Inhalt des Vektors nicht im Programmablauf gespeichert werden muss, sondern nur auf die Konsole oder das Display ausgegeben werden soll. Das folgende Beispiel demonstriert, wie die Array-Elemente in umgekehrter Reihenfolge und ohne Änderung der zugrunde liegenden Variableninhalte auf die Konsole ausgegeben werden können.

#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;
}

Ausgabe:

10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Autor: 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

Verwandter Artikel - C++ Array