25template <
class RandomAccessIterator,
class UserComparisonFunctor>
50template <
class RandomAccessIterator>
53 RandomAccessIterator end,
54 std::vector<size_t> & b)
57 b.resize(std::distance(beg, end));
60 for (
size_t i = 0; i < b.size(); ++i)
66template <
class RandomAccessIterator>
68indirectSort(RandomAccessIterator beg, RandomAccessIterator end, std::vector<size_t> & b)
75 typedef std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>
86 std::stable_sort(b.begin(), b.end(), ic);
91template <
class RandomAccessIterator,
class UserComparisonFunctor>
94 RandomAccessIterator end,
95 std::vector<size_t> & b,
96 UserComparisonFunctor user_comp)
109 std::stable_sort(b.begin(), b.end(), ic);
119 tmp.resize(container.size());
120 for (
size_t i = 0; i < indices.size(); i++)
121 tmp[i] = container[indices[i]];
122 std::swap(tmp, container);
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
void applyIndices(T &container, const std::vector< size_t > &indices)
Uses indices created by the indirectSort function to sort the given container (which must support ran...
void indirectSort(RandomAccessIterator beg, RandomAccessIterator end, std::vector< size_t > &b)
void initialize_indirect_sort(RandomAccessIterator beg, RandomAccessIterator end, std::vector< size_t > &b)
UserComparisonFunctor _user_comp
indirect_comparator(RandomAccessIterator r, UserComparisonFunctor c)
RandomAccessIterator _random_access_iterator
bool operator()(size_t lhs, size_t rhs)