39void Permute(TValuesBegin vb, TValuesEnd ve, TPermutationBegin pb)
41 using PermutationIndex = std::iterator_traits<TPermutationBegin>::value_type;
43 std::is_integral_v<PermutationIndex> and std::is_signed_v<PermutationIndex>,
44 "Permutation index must be signed integer");
45 auto n = std::distance(vb, ve);
46 using PtrDiffType =
decltype(n);
47 for (PtrDiffType i = 0; i < n; ++i)
52 auto value = *(vb + i);
57 *(vb + xi) = *(vb + pi);
64 for (PtrDiffType i = 0; i < n; ++i)
void Permute(TValuesBegin vb, TValuesEnd ve, TPermutationBegin pb)
Permute the values in-place according to the permutation.
Definition Permute.h:39