set vs unordered_set für die Schnellste iteration

In meiner Anwendung habe ich folgende Anforderungen -

  1. Strukturierung der Daten aufgefüllt wird, einfach mal mit einigen Werten (keine Schlüssel/Wert-Paare).
    Die Werte können wiederholt werden, aber ich möchte die Datenstruktur zum speichern von Ihnen nur einmal.
  2. Werde ich Durchlaufen 100s von Zeiten, durch alle Elemente der Datenstruktur, die oben erstellt. Die Reihenfolge, in der die Elemente angezeigt werden, die in die iteration ist dabei unerheblich.

Constraint 1 deutet darauf hin, dass ich entweder mit set oder unordered_set, da die Daten nicht in form von Schlüssel-Wert-Paare.

Nun Einschub ist teurer als unordered_set einfügen, aber die Datenstruktur ist nur ausgefüllt, einmal am Anfang von meinem Programm.

Ich glaube, der entscheidende Faktor wird sein, wie schnell ich iterieren über alle Elemente der Datenstruktur. Ich bin mir nicht sicher, ob set oder unordered_set wird schneller sein für diesen Zweck. Ich glaube, der standard macht keine Erwähnung dieser Tatsache als dieser Vorgang wird O(n) für die Daten-Struktur. Aber ich Frage mich, für welche Datenstruktur iterator.next() schneller sein wird.

Also, Messen Sie es und sehen.
Wie wäre es mit einem vector?
Sie können verschiedene Strukturen für verschiedene Zwecke. Zum Beispiel, bauen eine set, dann sobald Sie fertig sind kopieren/verschieben und alles in eine vector für die schnelle iteration. Also die Frage ist: brauchst du etwas andere als iteration, sobald es gefroren ist ? (wie schnell look-up)
Sie denken, dass die Satz magisch nicht haben, diese Kosten zu bezahlen?
std::lower_bound :-S

InformationsquelleAutor Aviral Goel | 2014-07-01

Schreibe einen Kommentar