В вашем коде нет разницы. Оба будут продвигать итератор на один шаг.
Просто для примера, где это может иметь значение, скажем, мы хотим напечатать второй элемент диапазона, мы не можем написать что-то вроде ++b.begin()
, так как мы можем Не применять ++
к значению.
Вот пример кода.
#include <array>
#include <iostream>
int main()
{
std::array<int, 2> a = {2, 4};
//std::cout << *(++a.begin()); // This will fail
std::cout << *std::next(a.begin());
}
Если мы раскомментируем первую строку вывода, g cc говорит
prog.cc: In function 'int main()':
prog.cc:8:29: error: lvalue required as increment operand
8 | std::cout << *(++a.begin());
| ~~~~~~~^~
Живой пример