Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
prev_permutation
Prototype

template<class BidirectionalRange>
bool prev_permutation(BidirectionalRange& rng);

template<class BidirectionalRange>
bool prev_permutation(const BidirectionalRange& rng);

template<class BidirectionalRange, class Compare>
bool prev_permutation(BidirectionalRange& rng, Compare pred);

template<class BidirectionalRange, class Compare>
bool prev_permutation(const BidirectionalRange& rng, Compare pred);

Description

prev_permutation transforms the range of elements rng into the lexicographically next smaller permutation of the elements if such a permutation exists. If one does not exist then the range is transformed into the lexicographically largest permutation and false is returned. true is returned when the next smaller permutation is successfully generated.

The ordering relationship is determined by using operator< in the non-predicate versions, and by evaluating pred in the predicate versions.

Definition

Defined in the header file boost/range/algorithm/permutation.hpp

Requirements

For the non-predicate versions:

For the predicate versions:

Complexity

Linear. At most distance(rng) / 2 swaps.


PrevUpHomeNext