| 58 | // comp(v[order[i]], v[order[j]]) == true for all i<j. |
| 59 | template<class T, class Compare> |
| 60 | void DecideOrder(const T& v, std::vector<int32_t>& order, const Compare& comp) { |
| 61 | // Initialize order |
| 62 | order.resize(v.size()); |
| 63 | for (int32_t i = 0; i < v.size(); i++) { order[i] = i; } |
| 64 | // sort |
| 65 | std::sort(order.begin(), order.end(), [&](int32_t i, int32_t j) { return comp(v[i], v[j]); }); |
| 66 | } |
| 67 | |
| 68 | // Inverse function of order |
| 69 | // The reason why we need the inverse_order, a.k.a id2order, instead of id2value is to eliminate |
no test coverage detected