10#ifndef MATH_PERMUTE_HEADER
11#define MATH_PERMUTE_HEADER
35template <
class V,
class P>
51template <
class V,
class P>
53permute_math (std::vector<V>& v, std::vector<P>
const& p);
57template <
class V,
class P>
61 if (v.size() != p.size())
62 throw std::invalid_argument(
"Vector length does not match");
67 std::vector<bool> visited(v.size(),
false);
88 for (; seek < visited.size(); ++seek)
100template <
class V,
class P>
104 if (v.size() != p.size())
105 throw std::invalid_argument(
"Vector length does not match");
110 std::vector<bool> visited(v.size(),
false);
112 std::size_t seek = 0;
120 while (!visited[p[i]])
123 visited[p[i]] =
true;
131 for (; seek < visited.size(); ++seek)
#define MATH_NAMESPACE_BEGIN
#define MATH_NAMESPACE_END
#define MATH_ALGO_NAMESPACE_BEGIN
#define MATH_ALGO_NAMESPACE_END
void permute_reloc(std::vector< V > &v, std::vector< P > const &p)
This function permutes a vector of elements v using a permutation given by vector p,...
void permute_math(std::vector< V > &v, std::vector< P > const &p)
This function permutes a vector of elements v using a permutation given by vector p,...