Синтаксис:
#include <set> void erase( iterator pos ); void erase( iterator start, iterator end ); size_type erase( const key_type& key );
Функция erase() либо стирает элемент в положении pos, либо стирает элементы между итераторами start и end, либо стирает все элементы, соответствующие заданному ключу key.
В примере erase() используется для стирания всех подходящих элементов и одного явно заданного элемента:
multiset<int> ms; multiset<int>::iterator iter; int i; for (i = 1; i < 5; i++) { ms.insert(i); ms.insert(i*i); ms.insert(i-1); } cout << "было: " ; for (iter = ms.begin(); iter != ms.end(); iter++) cout << " " << *iter; cout << "." << endl; ms.erase( 1 ); iter = ms.find( 3 ); if ( iter != ms.end() ) { ms.erase( iter ); } cout << "стало:" ; for (iter = ms.begin(); iter != ms.end(); iter++) cout << " " << *iter; cout << "." << endl;
Код выведет на экран:
было: 0 1 1 1 2 2 3 3 4 4 9 16. стало: 0 2 2 3 4 4 9 16.
Обратите внимание, что были удалены все три единицы и только одна тройка.