Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename T>
- bool
- next_permutation(T first, T last)
- {
- if (first == last) return false;
- auto x_item = last;
- for (T i = first; i != (last - 1); ++i)
- if (*i < *(i + 1)) x_item = i;
- if (x_item == last) return false;
- auto y_item = last;
- for (T i = first; i != last; ++i)
- if (*x_item < *i) y_item = i;
- if (y_item == last) return false;
- std::iter_swap(x_item, y_item);
- ++x_item;
- while ((x_item != last) && (x_item != --last))
- std::iter_swap(x_item++, last);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement