| 78 | template <typename Idx, typename Iter, typename V = typename std::iterator_traits<Iter>::value_type, |
| 79 | typename Comp = std::less<V>> |
| 80 | std::vector<Idx> ArgSort(Context const *ctx, Iter begin, Iter end, Comp comp = std::less<V>{}) { |
| 81 | auto n = std::distance(begin, end); |
| 82 | std::vector<Idx> result(n); |
| 83 | Iota(ctx, result.begin(), result.end(), 0); |
| 84 | auto op = [&](Idx const &l, Idx const &r) { return comp(begin[l], begin[r]); }; |
| 85 | StableSort(ctx, result.begin(), result.end(), op); |
| 86 | return result; |
| 87 | } |
| 88 | } // namespace common |
| 89 | } // namespace xgboost |
| 90 |
nothing calls this directly
no test coverage detected