Для использования std :: next необходим компилятор, совместимый как минимум с C ++ 11.
std::next
возвращает новый инкрементный итератор. Итак, вам нужно использовать его возвращаемое значение, чтобы получить увеличенный итератор, т.е.:
itr = next( itr );
Прямо сейчас, itr
указывает на тот же элемент, поскольку возвращаемое значение не используется.
Если вы намеревались увеличить itr
без нового итератора, тогда std :: advance является лучшим кандидатом здесь, т. Е.:
std::advance( itr, 1 );
Если вы используете пре-C ++ 11 компилятор, то вы можете использовать оператор приращения следующим образом:
itr++;
Или,
++itr;
Вот live демо.
Кроме того, карта неинициализирована / пуста, и вы пытаетесь получить доступ к ее элементам, которых там нет, и это приведет к Неопределенному поведению .
Соответствующее чтение: