70

Regarding the C++ STL map, erasing by key:-

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

Is it legal to erase a non-existing key? i.e. is the snippet below ok?

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

Cheers

fuad
  • 4,265
  • 9
  • 34
  • 32

2 Answers2

90

Yes, in fact, std::map::erase() returns a size_type which indicates the number of keys erased. Thus it returns 0 for nothing erased and 1 for something erased for a map.

rlbond
  • 65,341
  • 56
  • 178
  • 228
13

This is perfectly fine, mymap.erase('D') will return 0 in this case.

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

brian-brazil
  • 31,678
  • 6
  • 93
  • 86