Or login with:
#include <algorithm> template < class BidirectionalIterator > bool prev_permutation( BidirectionalIterator first, BidirectionalIterator last ); template < class BidirectionalIterator, class BinaryPredicate > bool prev_permutation( BidirectionalIterator first, BidirectionalIterator last, BinaryPredicate comp );Parameters:
| Parameter | Description |
|---|---|
| first | A bidirectional iterator pointing to the position of the first element in the range to be permuted |
| last | A bidirectional iterator pointing to the position one past the final element in the range to be permuted |
| comp | User-defined predicate function object that defines the comparison criterion to be satisfied by successive elements in the ordering. A binary predicate takes two arguments and returns true when satisfied and false when not satisfied |
[first, last) into the previous permutation from the set of all permutations that are lexicographically ordered.
The first version uses operator< for comparison and the second uses the function object comp.true if there was a previous permutation and has replaced the original ordering of the range, false otherwise.#include <algorithm> #include <string> #include <iostream> #include <functional> int main() { std::string s="abc"; std::sort(s.begin(), s.end(), std::greater<char>()); do { std::cout << s << ' '; } while(std::prev_permutation(s.begin(), s.end())); std::cout << '\n'; }
You must login to leave a messge