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 20251dcad..0b42ffb1e 100644 --- a/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst +++ b/source/elements/oneDPL/source/parallel_api/parallel_range_api.rst @@ -198,6 +198,79 @@ Element Search Operations std::ranges::borrowed_iterator_t adjacent_find (ExecutionPolicy&& pol, R&& r, Pred pred = {}, Proj proj = {}); + // contains + template , Proj>> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirect_binary_predicate< std::ranges::equal_to, + std::projected, Proj>, + const T* > + bool contains (ExecutionPolicy&& pol, R&& r, const T& value, Proj proj = {}); + + // contains_subrange + 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 > + bool contains_subrange (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, + Proj1 proj1 = {}, Proj2 proj2 = {}); + + // find_last + template , Proj>> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range && + std::indirect_binary_predicate< std::ranges::equal_to, + std::projected, Proj>, + const T* > + std::ranges::borrowed_subrange_t + find_last (ExecutionPolicy&& pol, R&& r, const T& value, Proj proj = {}); + + // find_last_if + template , Proj> > Pred> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range + std::ranges::borrowed_subrange_t + find_last_if (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); + + // find_last_if_not + template , Proj> > Pred> + requires oneapi::dpl::is_execution_policy_v> && + std::ranges::sized_range + std::ranges::borrowed_subrange_t + find_last_if_not (ExecutionPolicy&& pol, R&& r, Pred pred, Proj proj = {}); + + // starts_with + template < typename ExecutionPolicy, std::ranges::random_access_range R1, + std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to, + typename Proj1 = std::identity, typename Proj2 = std::identity> + 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 > + bool starts_with (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, + Proj1 proj1 = {}, Proj2 proj2 = {}); + + // ends_with + 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 > + bool ends_with (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {}, + Proj1 proj1 = {}, Proj2 proj2 = {}); } Minimum and Maximum