Разве перестановка не изменяет элементы вектора, воздействуя на позиции?
Нет. next_permutation
использует порядок элементов для определения следующей перестановки.
Например, если A next_permutation из [A, B, C] (012) будет [A, C, B] (021). Однако если A next_permutation из [A, B, C] (021) будет [C, A, B] (102).
Поскольку ваш вектор изначально был в порядке убывания, это была бы последняя перестановка.
Вы можете использовать порядок std::greater
, чтобы изменить направление сравнения.
} while(next_permutation(interval.begin(), interval.end(), greater<long>()));
// ^^^^^^^^^^^^^^^