Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others


0 votes
in Technique[技术] by (71.8m points)

c++ - Unordered map erase method storing temporary variable

For a unordered_map erase(), I have seen a few threads suggesting different methods for doing it (like getting the next element from the return of erase()). However, I haven't seen anybody suggesting the following. So, I was wondering if there is some issue with this approach:

for (auto it1 = map.begin(); it1 != map.end(); )
   auto it2 = it1++; //it2 assigned before it1 incremented

Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

This approach works fine. std::unordered_map::erase only invalidates the iterator to the erased element (i.e. it2), the aforehand incremented iterator it1 remains valid.

References and iterators to the erased elements are invalidated. Other iterators and references are not invalidated.

Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share