Skip to content

Commit 358d277

Browse files
[oneDPL][ranges] Add replace_copy and replace_copy_if (#638)
1 parent 431b55c commit 358d277

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,37 @@ Copying Mutating Operations
762762
std::ranges::borrowed_iterator_t<OutR>>
763763
remove_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, Proj proj = {});
764764
765+
// replace_copy
766+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
767+
std::ranges::random_access_range OutR, typename Proj = std::identity,
768+
typename T1 = /*projected-value-type*/<std::ranges::iterator_t<R>, Proj>>,
769+
typename T2 = std::ranges::range_value_t<OutR>>
770+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
771+
std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
772+
std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
773+
std::indirect_binary_predicate< std::ranges::equal_to,
774+
std::projected<std::ranges::iterator_t<R>, Proj>,
775+
const T1* > &&
776+
std::indirectly_writable<std::ranges::iterator_t<OutR>, const T2&>
777+
std::ranges::replace_copy_result<std::ranges::borrowed_iterator_t<R>,
778+
std::ranges::borrowed_iterator_t<OutR>>
779+
replace_copy (ExecutionPolicy&& pol, R&& r, OutR&& result, const T1& old_value,
780+
const T2& new_value, Proj proj = {});
781+
782+
// replace_copy_if
783+
template <typename ExecutionPolicy, std::ranges::random_access_range R,
784+
std::ranges::random_access_range OutR,
785+
class T = std::ranges::range_value_t<OutR>, typename Proj = std::identity,
786+
std::indirect_unary_predicate< std::projected<std::ranges::iterator_t<R>, Proj> > Pred,
787+
requires oneapi::dpl::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> &&
788+
std::ranges::sized_range<R> && std::ranges::sized_range<OutR> &&
789+
std::indirectly_copyable<std::ranges::iterator_t<R>, std::ranges::iterator_t<OutR>> &&
790+
std::indirectly_writable<std::ranges::iterator_t<OutR>, const T&>
791+
std::ranges::replace_copy_if_result<std::ranges::borrowed_iterator_t<R>,
792+
std::ranges::borrowed_iterator_t<OutR>>
793+
replace_copy_if (ExecutionPolicy&& pol, R&& r, OutR&& result, Pred pred, const T& new_value,
794+
Proj proj = {});
795+
765796
// reverse_copy
766797
template <typename ExecutionPolicy, std::ranges::random_access_range R,
767798
std::ranges::random_access_range OutR>

0 commit comments

Comments
 (0)