Comparer les tableaux en C++
-
Utiliser l’instruction de boucle
for
pour comparer des tableaux en C++ - Utiliser une fonction définie sur mesure pour comparer des tableaux en C++
-
Utilisez l’algorithme
std::equal
pour comparer des tableaux en C++
Cet article présentera plusieurs méthodes de comparaison de tableaux en C++.
Utiliser l’instruction de boucle for
pour comparer des tableaux en C++
Dans ces exemples, nous utiliserons un conteneur de tableau de variables - std::vector
. Cette classe possède un opérateur intégré ==
que nous pouvons utiliser pour comparer le contenu des deux vecteurs donnés. Dans ce cas, nous n’avons pas à nous soucier des différentes longueurs de vecteurs, car elles sont traitées par la méthode en interne. La valeur de retour est booléenne avec true
, impliquant l’égalité de deux vecteurs.
Notez que nous évaluons l’expression avec ? :
déclaration conditionnelle et l’impression des messages de chaîne correspondants à la console.
#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;
}
Production :
Vectors i_vec1 and i_vec2 are not the same
Vectors i_vec1 and i_vec3 are the same
Utiliser une fonction définie sur mesure pour comparer des tableaux en C++
La méthode précédente peut être généralisée dans la fonction de modèle de l’utilisateur et, si nécessaire, des codes de retour personnalisés et un traitement des exceptions peuvent être ajoutés. Dans cet exemple, nous avons implémenté la fonction compareVectorContents
qui prend deux références vector
et évalue la condition d’égalité en utilisant la structure if
.
#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
Utilisez l’algorithme std::equal
pour comparer des tableaux en C++
Une autre méthode pour comparer le contenu de deux vector
est l’algorithme std::equal
de la bibliothèque standard C++, défini dans le fichier d’en-tête <algorithm>
. La méthode equal
prend 4 paramètres représentant 2 plages séparées qui doivent être comparées, fournissant ainsi une interface plus générique pour traiter les comparaisons. Cette méthode peut être employée sur des plages formées avec des itérateurs à partir de conteneurs non ordonnés, à savoir - std::unordered_set
, std::unordered_map
etc. La valeur de retour equal
est booléenne et renvoie true
si les éléments sont identiques dans deux intervalles. De plus, la fonction retournera false
si les intervalles passés diffèrent en longueur.
#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;
}
Production :
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