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