Skip to content

Commit ae6a4d2

Browse files
[oneDPL][ranges] Add partial_sort and partial_sort_copy (#642)
1 parent cb36adf commit ae6a4d2

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

source/elements/oneDPL/source/parallel_api/parallel_range_api.rst

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,31 @@ Sorting, Merge, and Heap Operations
384384
std::ranges::borrowed_iterator_t<R>
385385
stable_sort (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {});
386386
387+
// partial_sort
388+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
389+
typename Comp = std::ranges::less, typename Proj = std::identity>
390+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
391+
std::ranges::sized_range<R> && std::sortable<std::ranges::iterator_t<R>, Comp, Proj>
392+
std::ranges::borrowed_iterator_t<R>
393+
partial_sort (ExecutionPolicy&& pol, R&& r, std::ranges::iterator_t<R> middle,
394+
Comp comp = {}, Proj proj = {});
395+
396+
// partial_sort_copy
397+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
398+
std::ranges::random_access_range OutR, typename Comp = std::ranges::less,
399+
typename Proj1 = std::identity, typename Proj2 = std::identity>
400+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
401+
std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
402+
std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
403+
std::sortable<std::ranges::iterator_t<OutR>, Comp, Proj2> &&
404+
std::indirect_strict_weak_order<Comp,
405+
std::projected<std::ranges::iterator_t<R>, Proj1>,
406+
std::projected<std::ranges::iterator_t<OutR>, Proj2> >
407+
std::ranges::partial_sort_copy_result<std::ranges::borrowed_iterator_t<R>,
408+
std::ranges::borrowed_iterator_t<OutR>>
409+
partial_sort_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, Comp comp = {},
410+
Proj1 proj1 = {}, Proj2 proj2 = {});
411+
387412
// is_sorted
388413
template <typename ExecutionPolicy, std::ranges::random_access_range R,
389414
typename Proj = std::identity,

0 commit comments

Comments
 (0)