Why does deleting set element in for each loops gives an error - C++

Viewed 41

Deleting elements while iterating over them from an unordered_set gives unexpected results in C++.

unordered_set<int> s({1,2,3});
for(int curr : s) {
   s.erase(curr);
}

This gave an error in leetcode - "AddressSanitzer: heap-use-after-free...". And on onlinegdb, it gave unexpected results - some elements (last inserted element) were deleted, some were still in the set.

Why is this happening?

0 Answers
Related