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?