Vektoren vergleichen



  • Hallo Leute ,
    ich habe 4 Vektoren
    vector<int> Row;
    vector<int> Column;
    vector<int> Orientation;
    vector<int> ObjectID;

    welche ich gerne untereinander vergleichen würde!

    Ich habe folgenden Code um zwei Vektoren zu vergleichen:

    template <class T>
    static bool compareVectors(const vector<T> &a, const vector<T> &b)
    {
    int n = a.size();
    std::vector<bool> free(n, true);
    for (int i = 0; i < n; i++) {
    bool matchFound = false;
    for (int j = 0; j < n; j++) {
    if (free[j] && a[i] == b[j]) {
    matchFound = true;
    free[j] = false;
    break;
    }
    }
    if (!matchFound) return false;
    }
    return true;
    }

    Nun meine Frage wie verheirate ich mein Problem alle 4 Vektoren zu vergleichen mit diesem Code???????????

    Hoffe mir kann jemand helfen!

    Viele Grüße!



  • Was hindert dich an vector1 == vector 2 && vector 2 == vector3 && vector3 == vector4? Fragezeichen sind übrigens keine Rudeltiere.



  • Für std::vector ist der Vergleich überladen, du kannst Vektoren mittels == vergleichen. Der Vergleich prüft erst die Größe der Vektorn und anschließend die Gleichheit der Elemente. Dazu müssen die Elemente an exakt der gleichen Stelle stehen und dürfen nicht vertauscht sein (zB {1,2} != {2,1}).

    if( vec1 == vec2 && vec1 == vc3 && vec1 == vec4 )
    {
       // alle gleich
    }
    

    Hilft das?



  • Hi,

    Deine Funktion stürzt ab, wenn b kürzer ist wie a. Außerdem ist die Performance unter aller Sau, wenn die vektoren zu groß werden. Damit wirst Du keinen Spaß haben.

    => sortiere Deine Vektoren vorher und benutze die bereits angesprochenen Features der Standardbibliothek.

    VG Martin
    P.S. Die Codetags sind nicht zur zum Spaß da.

    Edit: Bei mehreren Vektoren könnte allerding eventuel eine eigene Funktion aus Performancegründen sinnvoll sein.


Anmelden zum Antworten