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.