Range-v3
Range algorithms, views, and actions for the Standard Library
permutation.hpp File Reference

Functions

template<typename I1 , typename S1 , typename I2 , typename C = equal_to, typename P1 = identity, typename P2 = identity>
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > ranges::__attribute__ ((deprecated("Use the variant of ranges::is_permutation that takes an upper bound " "for both sequences"))) bool is_permutation(I1 begin1
 function template is_permutation
 
template<typename Rng1 , typename I2Ref , typename C = equal_to, typename P1 = identity, typename P2 = identity>
requires forward_range< Rng1 > &&forward_iterator< uncvref_t< I2Ref > > &&indirectly_comparable< iterator_t< Rng1 >, uncvref_t< I2Ref >, C, P1, P2 > ranges::__attribute__ ((deprecated("Use the variant of ranges::is_permutation that takes an upper bound " "for both sequences"))) bool is_permutation(Rng1 &&rng1
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 I2 C P1 P2 I1 &&forward_iterator< I2 > &&sentinel_for< S2, I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > bool ranges::is_permutation (I1 begin1, S1 end1, I2 begin2, S2 end2, C pred=C{}, P1 proj1=P1{}, P2 proj2=P2{})
 
requires forward_range< Rng1 > &&forward_iterator< uncvref_t< I2Ref > > &&indirectly_comparable< iterator_t< Rng1 >, uncvref_t< I2Ref >, C, P1, P2 > I2Ref C P1 P2 P2 bool ranges::is_permutation (Rng1 &&rng1, Rng2 &&rng2, C pred=C{}, P1 proj1=P1{}, P2 proj2=P2{})
 
template<typename I , typename S , typename C = less, typename P = identity>
requires bidirectional_iterator< I > &&sentinel_for< S, I > &&sortable< I, C, P > bool ranges::next_permutation (I first, S end_, C pred=C{}, P proj=P{})
 function template next_permutation
 
template<typename Rng , typename C = less, typename P = identity>
requires bidirectional_range< Rng > &&sortable< iterator_t< Rng >, C, P > bool ranges::next_permutation (Rng &&rng, C pred=C{}, P proj=P{})
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename I , typename S , typename C = less, typename P = identity>
requires bidirectional_iterator< I > &&sentinel_for< S, I > &&sortable< I, C, P > bool ranges::prev_permutation (I first, S end_, C pred=C{}, P proj=P{})
 function template prev_permutation
 
template<typename Rng , typename C = less, typename P = identity>
requires bidirectional_range< Rng > &&sortable< iterator_t< Rng >, C, P > bool ranges::prev_permutation (Rng &&rng, C pred=C{}, P proj=P{})
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Variables

requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 I2 ranges::begin2
 
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 ranges::end1
 
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 I2 C P1 P2 ranges::I2
 
requires forward_range< Rng1 > &&forward_iterator< uncvref_t< I2Ref > > &&indirectly_comparable< iterator_t< Rng1 >, uncvref_t< I2Ref >, C, P1, P2 > I2Ref C P1 P2 ranges::iterator_t< Rng2 >
 
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 I2 C P1 P2 ranges::P2 = identity > requires ` forward_iterator<I1> && sentinel_for<S1
 
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 I2 C P1 P2 ranges::proj2
 
requires forward_range< Rng1 > &&forward_iterator< uncvref_t< I2Ref > > &&indirectly_comparable< iterator_t< Rng1 >, uncvref_t< I2Ref >, C, P1, P2 > I2Ref C P1 P2 ranges::Rng2
 
requires forward_iterator< I1 > &&sentinel_for< S1, I1 > &&forward_iterator< I2 > &&indirectly_comparable< I1, I2, C, P1, P2 > S1 I2 C P1 P2 ranges::S2