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 Codebeispiel

    int 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 🙂


Anmelden zum Antworten