25 template <
class RandomAccessIterator,
class UserComparisonFunctor>
50 template <
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)
66 template <
class RandomAccessIterator>
68 indirectSort(RandomAccessIterator beg, RandomAccessIterator end, std::vector<size_t> & b)
75 typedef std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>
82 std::sort(b.begin(), b.end(), ic);
87 template <
class RandomAccessIterator,
class UserComparisonFunctor>
90 RandomAccessIterator end,
91 std::vector<size_t> & b,
92 UserComparisonFunctor user_comp)
101 std::sort(b.begin(), b.end(), ic);
106 template <
typename T>
111 tmp.resize(container.size());
112 for (
size_t i = 0; i < indices.size(); i++)
113 tmp[i] = container[indices[i]];
void swap(std::vector< T > &data, const std::size_t idx0, const std::size_t idx1, const libMesh::Parallel::Communicator &comm)
Swap function for serial or distributed vector of data.
RandomAccessIterator _random_access_iterator
void indirectSort(RandomAccessIterator beg, RandomAccessIterator end, std::vector< size_t > &b)
bool operator()(size_t lhs, size_t rhs)
void initialize_indirect_sort(RandomAccessIterator beg, RandomAccessIterator end, std::vector< size_t > &b)
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...
indirect_comparator(RandomAccessIterator r, UserComparisonFunctor c)
UserComparisonFunctor _user_comp
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...