Skip to content

Commit 291376e

Browse files
[oneDPL][ranges] Add lexicographical_compare parallel range algorithm (#632)
1 parent 256c3ec commit 291376e

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ Sequence Search and Comparison
288288
namespace oneapi::dpl::ranges {
289289
290290
// equal
291-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
291+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
292292
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
293293
typename Proj1 = std::identity, typename Proj2 = std::identity>
294294
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -299,7 +299,7 @@ Sequence Search and Comparison
299299
Proj1 proj1 = {}, Proj2 proj2 = {});
300300
301301
// mismatch
302-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
302+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
303303
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
304304
typename Proj1 = std::identity, typename Proj2 = std::identity>
305305
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -312,7 +312,7 @@ Sequence Search and Comparison
312312
Proj1 proj1 = {}, Proj2 proj2 = {});
313313
314314
// find_end
315-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
315+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
316316
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
317317
typename Proj1 = std::identity, typename Proj2 = std::identity>
318318
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -324,7 +324,7 @@ Sequence Search and Comparison
324324
Proj1 proj1 = {}, Proj2 proj2 = {});
325325
326326
// search
327-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
327+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
328328
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
329329
typename Proj1 = std::identity, typename Proj2 = std::identity>
330330
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -336,7 +336,7 @@ Sequence Search and Comparison
336336
Proj1 proj1 = {}, Proj2 proj2 = {});
337337
338338
// search_n
339-
template<typename ExecutionPolicy, std::ranges::random_access_range R,
339+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
340340
typename Pred = std::ranges::equal_to, typename Proj = std::identity,
341341
typename T = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>
342342
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -346,6 +346,17 @@ Sequence Search and Comparison
346346
search_n (ExecutionPolicy&& pol, R&& r, std::ranges::range_difference_t<R> count,
347347
const T& value, Pred pred = {}, Proj proj = {});
348348
349+
// lexicographical_compare
350+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
351+
std::ranges::random_access_range R2, typename Proj1 = std::identity,
352+
typename Proj2 = std::identity,
353+
std::indirect_strict_weak_order< std::projected<std::ranges::iterator_t<R1>, Proj1>,
354+
std::projected<std::ranges::iterator_t<R2>, Proj2> >
355+
Comp = std::ranges::less>
356+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
357+
std::ranges::sized_range<R1> && std::ranges::sized_range<R2>
358+
bool lexicographical_compare (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Comp comp = {},
359+
Proj1 proj1 = {}, Proj2 proj2 = {});
349360
}
350361
351362
Sorting, Merge, and Heap Operations

0 commit comments

Comments
 (0)