1#ifndef TATOOINE_UTILITY_REORDER_H
2#define TATOOINE_UTILITY_REORDER_H
10auto reorder(std::ranges::range
auto& data, std::ranges::range
auto& order)
11 ->
void requires integral<std::ranges::range_value_t<
decltype(order)>> {
12 assert(std::ranges::size(data) == std::ranges::size(order));
14 for (std::size_t vv = 0; vv <
size(data) - 1; ++vv) {
15 if (order[vv] == vv) {
18 auto oo = std::size_t{};
19 for (oo = vv + 1; oo < order.size(); ++oo) {
20 if (order[oo] == vv) {
24 std::swap(data[vv], data[order[vv]]);
25 std::swap(order[vv], order[oo]);
Definition: concepts.h:21
Definition: algorithm.h:6
auto reorder(std::ranges::range auto &data, std::ranges::range auto &order) -> void
reorders a range data with another range order
Definition: reorder.h:10
auto size(vec< ValueType, N > const &v)
Definition: vec.h:148