Skip to content

Commit 32a3028

Browse files
[oneDPL] Add reverse, swap_ranges and unique parallel range algorithms (#634)
1 parent 2d33d9e commit 32a3028

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ In-place Mutating Operations
478478
std::indirectly_writable<std::ranges::iterator_t<R>, const T&>
479479
std::ranges::borrowed_iterator_t<R>
480480
fill (ExecutionPolicy&& pol, R&& r, const T& value);
481-
481+
482482
// replace
483483
template <typename ExecutionPolicy, std::ranges::random_access_range R,
484484
typename Proj = std::identity,
@@ -525,6 +525,33 @@ In-place Mutating Operations
525525
std::ranges::borrowed_subrange_t<R>
526526
remove_if (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {});
527527
528+
// reverse
529+
template <typename ExecutionPolicy, std::ranges::random_access_range R>
530+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
531+
std::ranges::sized_range<R> && std::permutable<std::ranges::iterator_t<R>>
532+
std::ranges::borrowed_iterator_t<R>
533+
reverse (ExecutionPolicy&& pol, R&& r);
534+
535+
// swap_ranges
536+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
537+
std::ranges::random_access_range R2>
538+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
539+
std::ranges::sized_range<R1> && std::ranges::sized_range<R2> &&
540+
std::indirectly_swappable<std::ranges::iterator_t<R1>, std::ranges::iterator_t<R2>>
541+
std::ranges::swap_ranges_result<std::ranges::borrowed_iterator_t<R1>,
542+
std::ranges::borrowed_iterator_t<R2>>
543+
swap_ranges (ExecutionPolicy&& pol, R1&& r1, R2&& r2);
544+
545+
// unique
546+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
547+
typename Proj = std::identity,
548+
std::indirect_equivalence_relation< std::projected<std::ranges::iterator_t<R>, Proj> >
549+
Comp = std::ranges::equal_to>
550+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
551+
std::ranges::sized_range<R> && std::permutable<std::ranges::iterator_t<R>>
552+
std::ranges::borrowed_subrange_t<R>
553+
unique (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {});
554+
528555
}
529556
530557
.. _`C++ Standard`: https://isocpp.org/std/the-standard

0 commit comments

Comments
 (0)