diff --git a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst index 503c1e2e0..ec6e9f96c 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -153,6 +153,18 @@ Element Search Operations std::ranges::borrowed_iterator_t find_if_not (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); + // find_first_of + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + std::indirectly_comparable< std::ranges::iterator_t, std::ranges::iterator_t, + Pred, Proj1, Proj2 > + std::ranges::borrowed_iterator_t + find_first_of (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, + Proj1 proj1 = {}, Proj2 proj2 = {}); + // adjacent_find template adjacent_find (ExecutionPolicy&& pol, R&& r, Pred pred = {}, Proj proj = {}); + } + +Minimum and Maximum ++++++++++++++++++++ + +.. code:: cpp + + // Defined in + + namespace oneapi::dpl::ranges { + + // min + template , Proj> > + Comp = std::ranges::less> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirectly_copyable_storable< std::ranges::iterator_t, + std::ranges::range_value_t* > + std::ranges::range_value_t + min (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + + // max + template , Proj> > + Comp = std::ranges::less> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirectly_copyable_storable< std::ranges::iterator_t, + std::ranges::range_value_t* > + std::ranges::range_value_t + max (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + + + // minmax + template , Proj> > + Comp = std::ranges::less> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirectly_copyable_storable< std::ranges::iterator_t, + std::ranges::range_value_t* > + std::ranges::minmax_result> + minmax (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + // min_element template max_element (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + // minmax_element + template , Proj> > + Comp = std::ranges::less> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range + std::ranges::minmax_element_result> + minmax_element (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + } Sequence Search and Comparison @@ -206,6 +276,32 @@ Sequence Search and Comparison bool equal (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, Proj1 proj1 = {}, Proj2 proj2 = {}); + // mismatch + template + requires oneapi::dpl::is_execution_policy_v> && + (std::ranges::sized_range || std::ranges::sized_range) && + std::indirectly_comparable< std::ranges::iterator_t, std::ranges::iterator_t, + Pred, Proj1, Proj2 > + std::ranges::mismatch_result, + std::ranges::borrowed_iterator_t> + mismatch (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, + Proj1 proj1 = {}, Proj2 proj2 = {}); + + + // find_end + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + std::indirectly_comparable< std::ranges::iterator_t, std::ranges::iterator_t, + Pred, Proj1, Proj2 > + std::ranges::borrowed_subrange_t + find_end (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, + Proj1 proj1 = {}, Proj2 proj2 = {}); + // search template bool is_sorted (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + // is_sorted_until + template , Proj> > + Comp = std::ranges::less> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range + std::ranges::borrowed_iterator_t + is_sorted_until (ExecutionPolicy&& pol, R&& r, Comp comp = {}, Proj proj = {}); + // merge template > copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {}); + // move + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::ranges::sized_range && + std::indirectly_movable, std::ranges::iterator_t> + std::ranges::move_result, + std::ranges::borrowed_iterator_t> + move (ExecutionPolicy&& pol, R&& r, OutR&& result); + // transform (unary) template + + namespace oneapi::dpl::ranges { + + // fill + template > + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirectly_writable, const T&> + std::ranges::borrowed_iterator_t + fill (ExecutionPolicy&& pol, R&& r, const T& value); + + // generate + template + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::invocable && + std::indirectly_writable, std::invoke_result_t> + std::ranges::borrowed_iterator_t + generate (ExecutionPolicy&& pol, R&& r, F gen); + + // replace + template , Proj>, typename T2 = T1> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirectly_writable, const T2&> && + std::indirect_binary_predicate< std::ranges::equal_to, + std::projected, Proj>, + const T1* > + std::ranges::borrowed_iterator_t + replace (ExecutionPolicy&& pol, R&& r, const T1& old_value, const T2& new_value, + Proj proj = {}); + + // replace_if + template , Proj>, + std::indirect_unary_predicate< std::projected, Proj> > Pred> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirectly_writable, const T&> + std::ranges::borrowed_iterator_t + replace_if (ExecutionPolicy&& pol, R&& r, Pred pred, const T& new_value, Proj proj = {}); + + // remove + template , Proj>> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable && + std::indirect_binary_predicate< std::ranges::equal_to, + std::projected, Proj>, + const T* > + std::ranges::borrowed_subrange_t + remove (ExecutionPolicy&& pol, R&& r, const T& value, Proj proj = {}); + + // remove_if + template , Proj> > Pred> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && std::permutable> + std::ranges::borrowed_subrange_t + remove_if (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); + + } + .. _`C++ Standard`: https://isocpp.org/std/the-standard .. _`SYCL`: https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html