schnelle suche
-
Hallo,
nutze in meinem Projekt Vectoren, um Werte vorzuhalten. Der Inhalt des Vectors soll überprüft werden auf einen Wert aus einem anderen Vectors.
hier mein Codebeispielint WertCount; int Vorgabe01=10; // Größe kann zwischen 10 und 1000 sein int Vorgabe02=100; // dito for (int i=0; i<Vorgabe01; i++ { WertCount = 0; AnsiString Wert01 = Vector01[i]; for (int j=0; j<Vorgabe02; j++ { AnsiString Wert02 = Vector02[j]; if (Wert01 == Wert02) { // Wert existiert WertCount++; } } }Da die Vorgabe01 bzw Vorgabe02 je nach Bedarf unteschiedliche Größen haben, kann es vorkommen, das eine sehr lange Rechenzeit entsteht. Läßt sich dies auch besser lößen ?
Gruß Siegfried
-
Hallo
- du kopiert die AnsiString-Werte erst aus dem vector und vergleichst kann die Kopieen. Vergleich direkt die vector-Elemente.
- sortiere die vectoren vor, sodas du bei jedem Fund die nächste Suchmenge einschränken kannst
- benutze std::map anstatt std::vector oder eine andere Suchoptimierte Hashmap.bis bald
akari
-
hallo,
werde also in Zukunft die Vector-Elemente vergleichen. Vorsortieren kann ich nicht, da die Adresse(Zeiger) der Elemente nicht vertauscht werden können, denn bei übereinstimmung der suche, wird diese Adresse für weitere Operationen verwendet.
mit std::map und Hashmap kenne ich mich noch nicht aus.
danke für die Info's und heute mache ich Schluß.
Gruß Siegfried