Parallelized version of existing algorithms (parallelism TS)
The C++ Extensions for Parallelism TS provides parallelized versions of the following 69 existing algorithms. Each of the following parallelized algorithms
- 
        is declared in the
        std::experimental::parallelnamespace,
- 
        does not participate in overload resolution unless
        is_execution_policy<std::decay_t<ExecutionPolicy>>::valueistrue, and
- has the same semantics as the corresponding existing algorithm in the C++ standard library, except as noted in the page on parallel algorithms .
       
      
| 
 Non-modifying sequence operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           
            bool
           
           all_of
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::all_of | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           
            bool
           
           any_of
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::any_of | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           
            bool
           
           none_of
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::none_of | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          T
          
           > 
           
            typename
           
           iterator_traits
           
            <
           
           InputIt
           
            >
           
           
            ::
           
           
            difference_type
           
            | std::count | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           
            typename
           
           iterator_traits
           
            <
           
           InputIt
           
            >
           
           
            ::
           
           
            difference_type
           
            | std::count_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1,
          
           class
          
          InputIt2
          
           > 
           
            
             std::
             
              pair
             
            
           
           
            <
           
           InputIt1,InputIt2
           
            >
           
            | std::mismatch | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1,
          
           class
          
          InputIt2
          
           > 
           
            bool
           
           equal
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::equal | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          T
          
           > 
           InputIt find
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::find | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           InputIt find_if
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::find_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           InputIt find_if_not
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::find_if_not | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt1,
          
           class
          
          ForwardIt2
          
           > 
           ForwardIt1 find_end
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::find_end | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          ForwardIt
          
           > 
           InputIt find_first_of
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::find_first_of | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt adjacent_find
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::adjacent_find | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt1,
          
           class
          
          ForwardIt2
          
           > 
           ForwardIt1 search
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::search | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          Size,
          
           class
          
          T
          
           > 
           ForwardIt search_n
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::search_n | |
| Modifying sequence operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt
          
           > 
           OutputIt copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt, 
           
            class
           
           OutputIt,
           
            class
           
           UnaryPred
           
            >
           
            | std::copy_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt, 
           
            class
           
           Size,
           
            class
           
           OutputIt
           
            >
           
            | std::copy_n | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt
          
           > 
           OutputIt move
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, InputIt first, InputIt last,
            | std::move | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          T
          
           > 
           
            void
           
           fill
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, ForwardIt first, ForwardIt last,
            | std::fill | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          OutputIt,
          
           class
          
          Size,
          
           class
          
          T
          
           > 
           OutputIt fill_n
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, OutputIt first, Size count,
            | std::fill_n | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt, 
           
            class
           
           OutputIt,
           
            class
           
           UnaryOp
           
            >
           
            | std::transform | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          Generator
          
           > 
           
            void
           
           generate
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, ForwardIt first, ForwardIt last,
            | std::generate | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          OutputIt, 
           
            class
           
           Size,
           
            class
           
           Generator
           
            >
           
            | std::generate_n | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          T
          
           > 
           ForwardIt remove
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::remove | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          UnaryPred
          
           > 
           ForwardIt remove_if
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::remove_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt,
          
           class
          
          T
          
           > 
           OutputIt remove_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::remove_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt, 
           
            class
           
           OutputIt,
           
            class
           
           UnaryPred
           
            >
           
            | std::remove_copy_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          T
          
           > 
           
            void
           
           replace
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::replace | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt, 
           
            class
           
           UnaryPred,
           
            class
           
           T
           
            >
           
            | std::replace_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt,
          
           class
          
          T
          
           > 
           OutputIt replace_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::replace_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt, 
           
            class
           
           UnaryPred,
           
            class
           
           T
           
            >
           
            | std::replace_copy_if | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt1,
          
           class
          
          ForwardIt2
          
           > 
           ForwardIt2 swap_ranges
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::swap_ranges | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          BidirIt
          
           > void reverse ( ExecutionPolicy && policy, BidirIt first, BidirIt last ) ; | std::reverse | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          BidirIt,
          
           class
          
          OutputIt
          
           > 
           OutputIt reverse_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::reverse_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt rotate
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::rotate | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          OutputIt
          
           > 
           OutputIt rotate_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::rotate_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt unique
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::unique | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt
          
           > 
           OutputIt unique_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::unique_copy | |
| Partitioning operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          UnaryPred
          
           > 
           
            bool
           
           is_partitioned
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::is_partitioned | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          UnaryPred
          
           > 
           ForwardIt partition
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::partition | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt1, 
           
            class
           
           OutputIt2,
           
            class
           
           UnaryPred
           
            >
           
            | std::partition_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          BidirIt,
          
           class
          
          UnaryPred
          
           > 
           BidirIt stable_partition
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::stable_partition | |
| Sorting operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           
            bool
           
           is_sorted
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::is_sorted | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt is_sorted_until
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::is_sorted_until | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          RandomIt
          
           > 
           
            void
           
           sort
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy, RandomIt first, RandomIt last
           
            )
           
           
            ;
           
            | std::sort | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          RandomIt
          
           > 
           
            void
           
           partial_sort
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::partial_sort | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          RandomIt
          
           > 
           RandomIt partial_sort_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::partial_sort_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          RandomIt
          
           > 
           
            void
           
           stable_sort
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::stable_sort | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          RandomIt
          
           > 
           
            void
           
           nth_element
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::nth_element | |
| Set operations (on sorted ranges) | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1, 
           
            class
           
           InputIt2,
           
            class
           
           OutputIt
           
            >
           
            | std::merge | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          BidirIt
          
           > 
           
            void
           
           inplace_merge
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::inplace_merge | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1,
          
           class
          
          InputIt2
          
           > 
           
            bool
           
           includes
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::includes | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1, 
           
            class
           
           InputIt2,
           
            class
           
           OutputIt
           
            >
           
            | std::set_difference | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1, 
           
            class
           
           InputIt2,
           
            class
           
           OutputIt
           
            >
           
            | std::set_intersection | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1, 
           
            class
           
           InputIt2,
           
            class
           
           OutputIt
           
            >
           
            | std::set_symmetric_difference | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1, 
           
            class
           
           InputIt2,
           
            class
           
           OutputIt
           
            >
           
            | std::set_union | |
| Heap operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          RandomIt
          
           > 
           
            bool
           
           is_heap
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::is_heap | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          RandomIt
          
           > 
           RandomIt is_heap_until
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::is_heap_until | |
| Minimum/maximum operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt max_element
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::max_element | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt min_element
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::min_element | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt
          
           > 
           
            
             std::
             
              pair
             
            
           
           
            <
           
           ForwardIt,ForwardIt
           
            >
           
            | std::minmax_element | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1,
          
           class
          
          InputIt2
          
           > 
           
            bool
           
           lexicographical_compare
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::lexicographical_compare | |
| Numeric operations | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          OutputIt
          
           > 
           OutputIt adjacent_difference
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::adjacent_difference | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt1, 
           
            class
           
           InputIt2,
           
            class
           
           T
           
            >
           
            | std::inner_product | |
| Operations on uninitialized memory | ||
| Parallelized algorithm | Existing algorithm | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt,
          
           class
          
          ForwardIt
          
           > 
           ForwardIt uninitialized_copy
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::uninitialized_copy | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          InputIt, 
           
            class
           
           Size,
           
            class
           
           ForwardIt
           
            >
           
            | std::uninitialized_copy_n | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          T
          
           > 
           
            void
           
           uninitialized_fill
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::uninitialized_fill | |
| template
          
          
           <
          
          
           class
          
          ExecutionPolicy,
          
           class
          
          ForwardIt,
          
           class
          
          Size,
          
           class
          
          T
          
           > 
           ForwardIt uninitialized_fill_n
           
            (
           
           ExecutionPolicy
           
            &&
           
           policy,
            | std::uninitialized_fill_n | |
