Can we use forward iteration to erase elements in unordered_map ?
unordered_map<string, int> employeeTable;
unordered_map<string, int>::iterator it;
for (it = employeeTable.begin(); it != employeeTable.end();) {
int age = it->second;
if (age < 18) {
employeeTable.erase(it++);
} else {
++it;
}
}
If the above is incorrect, what does the standard recommend ? Something like below
it = employeeTable.erase(it);
According to 6.3.1 [tr.unord.req] paragraph 12:
That is, the code above should be OK.