Итератор 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.

Разве так должно быть ?


Ответы (0 шт):