Итератор std::multimap после удаления
Что то не понятное, после удаления елемента из std::multimap - итератор должен перейти на следющий итератор или multimap::end:
https://cplusplus.com/reference/map/multimap/erase/
Другие версии возвращают итератор к элементу, который следует за последним удаленным элементом (или multimap::end , если последний элемент был удален).
Вот такой код в VS2019:
#include <map>
int main()
{
std::multimap<std::string, int>my_multimap;
my_multimap.emplace("string_1", 1);
my_multimap.emplace("string_2", 2);
my_multimap.emplace("string_3", 3);
my_multimap.emplace("string_4", 4);
std::multimap<std::string, int>::iterator iterator;
iterator = my_multimap.begin();
my_multimap.erase(iterator);
}
После удаления элемента по итератору указывающему на Первый элемент, в итераторе iterator - теперь находится не итератор указывающий на следующий элемент, а там находится multimap::end.
Разве так должно быть ?