Если вы ссылаетесь на [iterator.requirements]
из стандарта C ++, iterator
требует перегрузки operator++()
(и operator++(int)
для большинства типов). Их не следует путать с operator+(int)
, что будет эквивалентом вашего второго примера. Оператор ++
равен , а не так же, как сложение.
Что на самом деле делает operator++()
, он просто перемещается вперед на один в списке, то есть к следующему элементу , Например:
std::map<int,int> map_instance = { { 1,1 }, {2,2}, {3,3} };
auto it = map_instance.begin(); // it points to {1,1}
it++; // now it points to {2,2}
Увеличение более чем на один можно сделать с помощью std::advance