Ich würde folgendes versuchen.
Rufen Sie zuerst equal_range()
auf, um den Bereich der Elemente zu ermitteln, die dem Schlüssel entsprechen.
Wenn der zurückgegebene Bereich nicht leer ist, dann erase()
ein Bereich von Elementen (dh der, erase()
der zwei Iteratoren benötigt), wobei:
Das erste Argument ist der Iterator für das zweite Element im zurückgegebenen Bereich (dh eine zurückgegebene Vergangenheit .first
) und
das zweite Argument als das des zurückgegebenen Bereichspaar-Iterators .second
.
Nach dem Lesen des Kommentars von templatetypedef (Danke!) Bearbeiten :
Wenn ein (im Gegensatz zu allen) Duplikat entfernt werden soll: Wenn das von zurückgegebene Paar equal_range()
mindestens zwei Elemente enthält, erase()
übergibt das erste Element das erste des zurückgegebenen Paares an eine einzelne Iteratorversion von erase()
:
Pseudocode:
pair<iterator, iterator> pit = mymultiset.equal_range( key );
if( distance( pit.first, pit.second ) >= 2 ) {
mymultiset.erase( pit.first );
}