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:)
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% Wenn es Ihnen nichts ausmacht, den Vektor zu sortieren, können Sie std::unique
verwenden. Das wäre O (Nlog (N))
Tags und Links c++ vector duplicate-removal erase