Не найдено информации о причинах существования двух разных реализаций алгоритма next_permutation в стандартной библиотеке C++.
Однако известно, что функция next_permutation позволяет по заданной перестановке получать следующую лексикографически минимальную. 5 При этом функция возвращает true, если таковая перестановка существует. 5 Для максимальной перестановки следующей не существует, в этом случае функция возвращает false и преобразует исходную максимальную перестановку в минимальную. 5
Функция работает на основе простого алгоритма, который включает только операции замены и реверса. 1 На практике такие функции эффективно используют для последовательностей небольшого и среднего размера, для очень больших последовательностей могут быть более подходящими другие алгоритмы. 1