Doppelte Einträge in einem C ++ Vektor entfernen

7

Ich möchte nur Duplikate entfernen. Pool ist vector<pair<string, int>> , aber ich vermisse irgendwie einige Elemente am Anfang des Vektors. Kann jemand die Logik der Entfernung verifizieren? Danke:)

%Vor%     
T3CHN0CR4T 10.05.2013, 06:00
quelle

2 Antworten

4

Dies ist ein sehr häufiges Problem.

Weil, nachdem Sie ein Element gelöscht haben, die Position j ein Element aufgrund des j ++ in der for-Schleife überspringt. Die einfachste Lösung, um das Problem basierend auf Ihrem Code zu lösen, ist j - after generation.erase (iter) hinzuzufügen:

%Vor%     
Gisway 10.05.2013, 06:10
quelle
19

Wenn es Ihnen nichts ausmacht, den Vektor zu sortieren, können Sie std::unique verwenden. Das wäre O (Nlog (N))

%Vor%     
juanchopanza 10.05.2013 06:16
quelle