Что касается карты 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');
Ваше здоровье