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

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -