#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, char> v = {{1, 'a'}, {7, 'd'}};
auto it = v.begin();
for (; it != v.end(); it++) {
//cout << "Current it position = " << it - v.begin() << endl;
//auto it2 = it++;
// TODO #1: Erasing the last element cause infinitive loop
// (ONLY valid for vector, not map)
if (it->first == 7) v.erase(it);
// TODO #2: If not #1, next to deleted element
// is stepped over (not erased)
// (ONLY valid for vector, not map)
//cout << "Erased element: " << *it2 << endl;
//v.erase(it2);
}
//
cout << "Ended. Map size: " << v.size() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogIAltYXA8aW50LCBjaGFyPiB2ID0ge3sxLCAnYSd9LCB7NywgJ2QnfX07CiAgCWF1dG8gaXQgPSB2LmJlZ2luKCk7CiAgCQogIAlmb3IgKDsgaXQgIT0gdi5lbmQoKTsgaXQrKykgewogIAkJLy9jb3V0IDw8ICJDdXJyZW50IGl0IHBvc2l0aW9uID0gIiA8PCBpdCAtIHYuYmVnaW4oKSA8PCBlbmRsOwogIAkJLy9hdXRvIGl0MiA9IGl0Kys7CiAgCSAgICAKICAJICAgIC8vIFRPRE8gIzE6IEVyYXNpbmcgdGhlIGxhc3QgZWxlbWVudCBjYXVzZSBpbmZpbml0aXZlIGxvb3AgCiAgCSAgICAvLyAoT05MWSB2YWxpZCBmb3IgdmVjdG9yLCBub3QgbWFwKQogIAkJaWYgKGl0LT5maXJzdCA9PSA3KSB2LmVyYXNlKGl0KTsKICAJCQogIAkJLy8gVE9ETyAjMjogSWYgbm90ICMxLCBuZXh0IHRvIGRlbGV0ZWQgZWxlbWVudCAKICAJCS8vIGlzIHN0ZXBwZWQgb3ZlciAobm90IGVyYXNlZCkKICAJCS8vIChPTkxZIHZhbGlkIGZvciB2ZWN0b3IsIG5vdCBtYXApCiAgCQkKICAJCS8vY291dCA8PCAiRXJhc2VkIGVsZW1lbnQ6ICIgPDwgKml0MiA8PCBlbmRsOwogIAkJLy92LmVyYXNlKGl0Mik7CiAgCX0KICAJCiAgCS8vIAogIAljb3V0IDw8ICJFbmRlZC4gTWFwIHNpemU6ICIgPDwgdi5zaXplKCkgPDwgZW5kbDsKICAJCglyZXR1cm4gMDsKfQ==