1 #ifndef __JTOOLS__JPERMUTATION__
2 #define __JTOOLS__JPERMUTATION__
12 namespace JPP {
using namespace JTOOLS; }
19 template<
class T,
class JComparator_t>
23 JComparator_t compare,
24 std::bidirectional_iterator_tag)
31 for (T __i = __last; --__i != __rend; ) {
35 for (__j = __last; __j != __end && !compare(*__i,*__j); ++__j) {}
41 if (++__i != __last && ++__j != __end) {
48 while (__k != __j && __i != __last)
49 iter_swap(__i++,--__k);
59 reverse(__begin, __last);
60 reverse(__last, __end);
61 reverse(__begin, __end);
78 template<
class T,
class JComparator_t>
82 JComparator_t compare)
84 return next_permutation(__begin, __last, __end, compare,
typename std::iterator_traits<T>::iterator_category());