С++ STL map:: стереть несуществующий ключ

Что касается карты C++ STL, стирание по ключу: -

 size_type map::erase ( const key_type& x );

Законно ли стирание несуществующего ключа? то есть приведенный ниже фрагмент в порядке?

map<char,int> mymap;
mymap['c']=30;
mymap.erase('c');
mymap.erase('c');
mymap.erase('D');

Ваше здоровье


person fuad    schedule 30.03.2009    source источник


Ответы (2)


Да, на самом деле std::map::erase() возвращает size_type, который указывает количество ключей стерто. Таким образом, он возвращает 0, если ничего не стерто, и 1, если что-то стерто для карты.

person rlbond    schedule 30.03.2009

Это совершенно нормально, mymap.erase('D') в этом случае вернет 0.

См. http://www.cplusplus.com/reference/stl/map/erase.html

person brian-brazil    schedule 30.03.2009