См., например, http://en.cppreference.com/w/cpp/container/map/erase
В С++ 03 было три перегрузки:
void erase( iterator pos );
void erase( iterator first, iterator last );
size_type erase( const key_type& key );
В С++ 11 первая и вторая перегрузки были изменены, чтобы принять const_iterator
, чтобы их можно было вызвать с помощью iterator
или const_iterator
. Первая перегрузка была также улучшена за счет возврата итератора к элементу после того, как он был удален:
iterator erase( const_iterator pos );
void erase( const_iterator first, const_iterator last );
size_type erase( const key_type& key );
В С++ 17 была повторно введена неконстантная перегрузка:
iterator erase( const_iterator pos );
iterator erase( iterator pos );
void erase( const_iterator first, const_iterator last );
size_type erase( const key_type& key );
Зачем это нужно? Он не был добавлен для диапазона erase
, ни для insert
, ни для любого из контейнеров последовательности, таких как vector
, deque
и list
.