Skip to content

Commit e2ba34d

Browse files
[oneDPL] Add lexicographical_compare parallel range algorithm
1 parent 1ea5088 commit e2ba34d

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ Sequence Search and Comparison
266266
namespace oneapi::dpl::ranges {
267267
268268
// equal
269-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
269+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
270270
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
271271
typename Proj1 = std::identity, typename Proj2 = std::identity>
272272
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -277,7 +277,7 @@ Sequence Search and Comparison
277277
Proj1 proj1 = {}, Proj2 proj2 = {});
278278
279279
// mismatch
280-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
280+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
281281
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
282282
typename Proj1 = std::identity, typename Proj2 = std::identity>
283283
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -288,10 +288,9 @@ Sequence Search and Comparison
288288
std::ranges::borrowed_iterator_t<R2>>
289289
mismatch (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Pred pred = {},
290290
Proj1 proj1 = {}, Proj2 proj2 = {});
291-
292291
293292
// find_end
294-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
293+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
295294
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
296295
typename Proj1 = std::identity, typename Proj2 = std::identity>
297296
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -303,7 +302,7 @@ Sequence Search and Comparison
303302
Proj1 proj1 = {}, Proj2 proj2 = {});
304303
305304
// search
306-
template<typename ExecutionPolicy, std::ranges::random_access_range R1,
305+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
307306
std::ranges::random_access_range R2, typename Pred = std::ranges::equal_to,
308307
typename Proj1 = std::identity, typename Proj2 = std::identity>
309308
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -315,7 +314,7 @@ Sequence Search and Comparison
315314
Proj1 proj1 = {}, Proj2 proj2 = {});
316315
317316
// search_n
318-
template<typename ExecutionPolicy, std::ranges::random_access_range R,
317+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
319318
typename Pred = std::ranges::equal_to, typename Proj = std::identity,
320319
typename T = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>
321320
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
@@ -325,6 +324,19 @@ Sequence Search and Comparison
325324
search_n (ExecutionPolicy&& pol, R&& r, std::ranges::range_difference_t<R> count,
326325
const T& value, Pred pred = {}, Proj proj = {});
327326
327+
// lexicographical_compare
328+
template <typename ExecutionPolicy, std::ranges::random_access_range R1,
329+
std::ranges::random_access_range R2, typename Proj1 = std::identity,
330+
typename Proj2 = std::identity,
331+
std::indirect_strict_weak_order< std::projected<std::ranges::iterator_t<R1>, Proj1>,
332+
std::projected<std::ranges::iterator_t<R2>, Proj2> >
333+
Comp = std::ranges::less>
334+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
335+
std::ranges::sized_range<R1> && std::ranges::sized_range<R2> &&
336+
std::indirectly_comparable< std::ranges::iterator_t<R1>, std::ranges::iterator_t<R2>,
337+
Comp, Proj1, Proj2 >
338+
bool lexicographical_compare (ExecutionPolicy&& pol, R1&& r1, R2&& r2, Comp comp = {},
339+
Proj1 proj1 = {}, Proj2 proj2 = {});
328340
}
329341
330342
Sorting and Merge

0 commit comments

Comments
 (0)