möglichst schnell mehrere Arrays vergleichen
-
Hi Leute,
ich bin auf der Suche nach einer schnellen Möglichkeit Arrays zu vergleichen,
muß ich hierzu jeden Wert des Array z.B. mit einer for-Schleife ansehen oder geht das auch anders?folgendes hab ich probiert:
int iTestA[2][2] = {0,0,0,0}; int iTestB[2][2] = {0,0,0,0}; if (iTestA == iTestB) cout << "ok" << endl;hat nicht funktioniert.
mit einer Struktur hab ich's auch nicht hinbekommen:
struct Array1 { int x; int y ; }; Array1 test; test.x = 1; test.y = 2; Array1 test2; test2.x = 1; test2.y = 2; if (test == test2) cout << "ok" << endl;
-
memcmp
-
der erste code-abschnitt ist komplett falsch. Zum einen versuchst du hier, einen mehrdimensionalen array zu erzeugen, und füllst ihn anschliessend mit einfachen eindimensionalen werten, dann vergleichst du zwei zeiger, die selbstverständlich auf verschiedene speicherbereiche zeigen. Die zweite idee ist wohl auch kaum zu gebrauchen, was soll denn so eine struktur darstellen? Du wirst ja wohl kaum in einer struktur zig-hundert integer einzeln speichern wollen...
(wobei das mit dem vergleich eigentlich afaik funktionieren sollte, ich dachte eigentlich, dass die strukturen per default einfach komponentenweise verglichen werden
)wenn du keinen "tiefen" vergleich brauchst (wenn deine objekte zB. keine zeiger auf weitere zu vergleichende container beinhalten), dann kannst du in der tat alles sehr schnell mit memory-compair vergelichen, ansonsten musst du mmit einer for-schleife drübergehen, und evtl, je nach komplexität der objekte, einen eigenen ==operator definieren.
-
danke für die Hilfe,
folgendes gibt mir aber -1 zurück und nicht 0, obwohl die Arrays gleich initialisiert wurden.
int a; a = memcmp(array1, array2, sizeof(array1)+sizeof(array2)); cout << a << endl;
-
ups, ich muß die Länge ja gar nicht zusammenrechnen, sondern nur von einem Array angeben^^