Я бы попробовал следующее.
Первый вызов equal_range()
, чтобы найти диапазон элементов, равный ключу.
Если возвращаемый диапазон не пуст, то erase()
диапазон элементов (то есть erase()
, который принимает два итератора), где:
Редактировать после прочтения templatetypedef (Спасибо!) Комментарий:
Если предполагается удалить один (в отличие от всех) дубликат: если пара, возвращаемая equal_range()
, имеет хотя бы два элемента, то erase()
первый элемент, передавая .first возвращенной пары в версия с одним итератором erase()
:
Псевдо-код:
pair<iterator, iterator> pit = mymultiset.equal_range( key );
if( distance( pit.first, pit.second ) >= 2 ) {
mymultiset.erase( pit.first );
}