Comparer les tableaux en C++

  1. Utiliser l’instruction de boucle for pour comparer des tableaux en C++
  2. Utiliser une fonction définie sur mesure pour comparer des tableaux en C++
  3. 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::cout; using std::cin;
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::cout; using std::cin;
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 <iostream>
#include <vector>
#include <algorithm>

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

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

Article connexe - C++ Array

  • Comment imprimer un tableau en C++