comparison foosdk/sdk/pfc/stdsort.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
comparison
equal deleted inserted replaced
0:e9bb126753e7 1:20d02a178406
1 #pragma once
2
3 // OPTIONAL pfc feature, include on need to use basis
4 // std sort interop methods
5
6 #include <algorithm>
7 #include <functional>
8 #include <vector>
9
10 namespace pfc {
11
12 std::vector<size_t> sort_identity( size_t count ) {
13 std::vector<size_t> ret; ret.resize(count);
14 for( size_t walk = 0; walk < ret.size(); ++ walk) ret[walk] = walk;
15 return ret;
16 }
17
18 template<typename iterator_t, typename predicate_t>
19 std::vector<size_t> sort_get_order(iterator_t i1, iterator_t i2, predicate_t pred ) {
20 auto ret = sort_identity( i2 - i1 );
21 auto pred2 = [pred, i1] (size_t idx1, size_t idx2) {
22 return pred( *(i1+idx1), *(i1+idx2));
23 };
24 std::sort(ret.begin(), ret.end(), pred2);
25 return ret;
26 }
27
28 }