When I tried to delete end() element from the map using erase I got no issues in compilation but on later printing the map.begin() key/mapped_value I got segmentation fault:
 //RELEVANT HEADERS
 //main function starts
 map<int, string> m;
 m[0] = "hello";
 m[1] = "Mello";
 m.erase(m.end());
 cout<<(m.begin())->second;
OUTPUT: Segmentation fault
My question is: on trying to delete the end() element nothing would've happened to the structure of map m as end refers to one past the real end element, so what really triggered that segmentation fault as the memory structure still holds same as before deletion. 
 
     
    