| 135 | |
| 136 | template <typename StructType, typename MemberType> |
| 137 | void order_pointer_vector_by_field(std::vector<StructType *> &vec, MemberType StructType::*member, bool asc = true) |
| 138 | { |
| 139 | std::sort(OPT_EXEC_POLICY vec.begin(), vec.end(), |
| 140 | [member, asc](const StructType *a, const StructType *b) |
| 141 | { |
| 142 | if (asc) |
| 143 | return (a->*member) < (b->*member); |
| 144 | else |
| 145 | return (a->*member) > (b->*member); |
| 146 | }); |
| 147 | } |
| 148 | |
| 149 | template <typename T> |
| 150 | size_t countAllEvents(const std::deque<std::vector<T>> &events) |