c++ - Is it safe to invoke std::map::erase with std::map::begin? -
we (all) know, erasing element, pointer iterator invalidates iterator, example:
std::map< .. > map_; std::map< .. >::iterator iter; // .. map_.erase( iter ); // invalidate `iter`. but, about:
map_.erase( map_.begin() ); is safe? map_.begin() valid iterator, pointing (new) first element of map?
"test it" not solution.
begin() not iterator returns iterator. after erasing first element, begin()returns (valid) iterator.
std::map<int, int> m; m[1] = 2; m[2] = 3; m.erase(m.begin()); // <- begin() points 1:2 std::cout << m.begin()->second; // <- begin() points 2:3
Comments
Post a Comment