Vergleichen von Arrays in C++
-
Verwendung der Schleifenanweisung
for
zum Vergleichen von Arrays in C++ - Benutzerdefinierte Funktion zum Vergleichen von Arrays in C++ verwenden
-
Verwenden des
std::equal
-Algorithmus zum 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
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