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 );
}