Vergleichen von Arrays in C++

Jinku Hu 12 Oktober 2023
  1. Verwendung der Schleifenanweisung for zum Vergleichen von Arrays in C++
  2. Benutzerdefinierte Funktion zum Vergleichen von Arrays in C++ verwenden
  3. Verwenden des std::equal-Algorithmus zum Vergleichen von Arrays in C++
Vergleichen von Arrays in C++

Dieser Artikel demonstriert mehrere Methoden, wie man Arrays in C++ vergleicht.

Verwendung der Schleifenanweisung for zum Vergleichen von Arrays in C++

In diesen Beispielen werden wir einen variablen Array-Container verwenden - std::vector. Diese Klasse hat einen eingebauten Operator ==, den wir verwenden können, um die Inhalte der beiden gegebenen Vektoren zu vergleichen. In diesem Fall müssen wir uns nicht um unterschiedliche Vektorlängen kümmern, da diese von der Methode intern behandelt werden. Der Rückgabewert ist boolesch mit true, was bedeutet, dass zwei Vektoren gleich sind.

Beachten Sie, dass wir den Ausdruck mit der bedingten Anweisung ? : auswerten und die entsprechenden Zeichenketten auf der Konsole ausgeben.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec2 = {12, 32, 43, 53, 23, 25};
  vector<int> i_vec3 = {12, 32, 43, 53, 23, 65};

  i_vec1 == i_vec2
      ? cout << "Vectors i_vec1 and i_vec2 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec2 are not the same" << endl;

  i_vec1 == i_vec3
      ? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

Vectors i_vec1 and i_vec2 are not the same
Vectors i_vec1 and i_vec3 are the same

Benutzerdefinierte Funktion zum Vergleichen von Arrays in C++ verwenden

Die vorherige Methode kann in einer benutzerdefinierten Vorlagenfunktion verallgemeinert werden, und bei Bedarf können benutzerdefinierte Rückgabecodes und Ausnahmebehandlung hinzugefügt werden. In diesem Beispiel haben wir die Funktion compareVectorContents implementiert, die zwei Vektor-Referenzen entgegennimmt und die Gleichheitsbedingung mithilfe der if-Struktur auswertet.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
bool compareVectorContents(vector<T> &vec1, vector<T> &vec2) {
  if (vec1 == vec2) {
    return true;
  } else {
    return false;
  }
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec3 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec4 = {12, 32, 43};

  compareVectorContents(i_vec1, i_vec3)
      ? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;

  compareVectorContents(i_vec1, i_vec4)
      ? cout << "Vectors i_vec1 and i_vec4 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec4 are not the same" << endl;

  return EXIT_SUCCESS;
}
Vectors i_vec1 and i_vec3 are the same
Vectors i_vec1 and i_vec4 are not the same

Verwenden des std::equal-Algorithmus zum Vergleichen von Arrays in C++

Eine weitere Methode zum Vergleichen von Inhalten zweier Vektoren ist der std::equal-Algorithmus aus der C++-Standardbibliothek, der in der Header-Datei <algorithm> definiert ist. Die Methode equal nimmt 4 Parameter entgegen, die 2 getrennte Bereiche repräsentieren, die verglichen werden müssen, und bietet somit eine generischere Schnittstelle für den Umgang mit Vergleichen. Diese Methode kann auf Bereiche angewendet werden, die mit Iteratoren aus ungeordneten Containern gebildet werden, nämlich - std::unordered_set, std::unordered_map usw. Der Rückgabewert equal ist boolesch und gibt true zurück, wenn die Elemente in zwei Bereichen gleich sind. Außerdem gibt die Funktion false zurück, wenn sich die übergebenen Bereiche in der Länge unterscheiden.

#include <algorithm>
#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::equal;
using std::string;
using std::vector;

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec2 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec3 = {12, 32, 43};

  equal(i_vec1.begin(), i_vec1.end(), i_vec2.begin(), i_vec2.end())
      ? cout << "Vectors i_vec1 and i_vec2 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec2 are not the same" << endl;
  equal(i_vec1.begin(), i_vec1.end(), i_vec3.begin(), i_vec3.end())
      ? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

Vectors i_vec1 and i_vec2 are the same
Vectors i_vec1 and i_vec3 are not the same
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