Если предположить, что boost::unordered_map::erase
работает так же, как std::unordered_map::erase
, то последовательность:
hash_table_->erase(it);
it++;
вызывает неопределенное поведение, потому что erase
делает недействительным it
.
Однако вы можете сделать:
it = hash_table_->erase(it);
потому что erase
возвращает итератор, следующий за удаленным.