thrust::partition#
Overloads#
partition(exec, first, last, pred)#
-
template<typename DerivedPolicy, typename ForwardIterator, typename Predicate>
ForwardIterator thrust::partition( - const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
- ForwardIterator first,
- ForwardIterator last,
- Predicate pred,
partitionreorders the elements[first, last)based on the function objectpred, such that all of the elements that satisfypredprecede the elements that fail to satisfy it. The postcondition is that, for some iteratormiddlein the range[first, last),pred(*i)istruefor every iteratoriin the range[first,middle)andfalsefor every iteratoriin the range[middle, last). The return value ofpartitionismiddle.Note that the relative order of elements in the two reordered sequences is not necessarily the same as it was in the original sequence. A different algorithm,
stable_partition, does guarantee to preserve the relative order.The algorithm’s execution is parallelized as determined by
exec.The following code snippet demonstrates how to use
partitionto reorder a sequence so that even numbers precede odd numbers using thethrust::hostexecution policy for parallelization:#include <thrust/partition.h> #include <thrust/execution_policy.h> ... struct is_even { __host__ __device__ bool operator()(const int &x) { return (x % 2) == 0; } }; ... int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; const int N = sizeof(A)/sizeof(int); thrust::partition(thrust::host, A, A + N, is_even()); // A is now {2, 4, 6, 8, 10, 1, 3, 5, 7, 9}
See also
See also
- Parameters:
exec – The execution policy to use for parallelization.
first – The beginning of the sequence to reorder.
last – The end of the sequence to reorder.
pred – A function object which decides to which partition each element of the sequence
[first, last)belongs.
- Template Parameters:
DerivedPolicy – The name of the derived execution policy.
ForwardIterator – is a model of Forward Iterator, and
ForwardIterator'svalue_typeis convertible toPredicate'sargument type, andForwardIteratoris mutable.Predicate – is a model of Predicate.
- Returns:
An iterator referring to the first element of the second partition, that is, the sequence of the elements which do not satisfy
pred.
partition(first, last, pred)#
-
template<typename ForwardIterator, typename Predicate>
ForwardIterator thrust::partition( - ForwardIterator first,
- ForwardIterator last,
- Predicate pred,
partitionreorders the elements[first, last)based on the function objectpred, such that all of the elements that satisfypredprecede the elements that fail to satisfy it. The postcondition is that, for some iteratormiddlein the range[first, last),pred(*i)istruefor every iteratoriin the range[first,middle)andfalsefor every iteratoriin the range[middle, last). The return value ofpartitionismiddle.Note that the relative order of elements in the two reordered sequences is not necessarily the same as it was in the original sequence. A different algorithm,
stable_partition, does guarantee to preserve the relative order.The following code snippet demonstrates how to use
partitionto reorder a sequence so that even numbers precede odd numbers.#include <thrust/partition.h> ... struct is_even { __host__ __device__ bool operator()(const int &x) { return (x % 2) == 0; } }; ... int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; const int N = sizeof(A)/sizeof(int); thrust::partition(A, A + N, is_even()); // A is now {2, 4, 6, 8, 10, 1, 3, 5, 7, 9}
See also
See also
- Parameters:
first – The beginning of the sequence to reorder.
last – The end of the sequence to reorder.
pred – A function object which decides to which partition each element of the sequence
[first, last)belongs.
- Template Parameters:
ForwardIterator – is a model of Forward Iterator, and
ForwardIterator'svalue_typeis convertible toPredicate'sargument type, andForwardIteratoris mutable.Predicate – is a model of Predicate.
- Returns:
An iterator referring to the first element of the second partition, that is, the sequence of the elements which do not satisfy
pred.
partition(exec, first, last, stencil, pred)#
-
template<typename DerivedPolicy, typename ForwardIterator, typename InputIterator, typename Predicate>
ForwardIterator thrust::partition( - const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
- ForwardIterator first,
- ForwardIterator last,
- InputIterator stencil,
- Predicate pred,
partitionreorders the elements[first, last)based on the function objectpredapplied to a stencil range[stencil, stencil + (last - first)), such that all of the elements whose corresponding stencil element satisfiespredprecede all of the elements whose corresponding stencil element fails to satisfy it. The postcondition is that, for some iteratormiddlein the range[first, last),pred(*stencil_i)istruefor every iteratorstencil_iin the range[stencil,stencil + (middle - first))andfalsefor every iteratorstencil_iin the range[stencil + (middle - first), stencil + (last - first)). The return value ofstable_partitionismiddle.Note that the relative order of elements in the two reordered sequences is not necessarily the same as it was in the original sequence. A different algorithm,
stable_partition, does guarantee to preserve the relative order.The algorithm’s execution is parallelized as determined by
exec.The following code snippet demonstrates how to use
partitionto reorder a sequence so that even numbers precede odd numbers using thethrust::hostexecution policy for parallelization:#include <thrust/partition.h> #include <thrust/execution_policy.h> ... struct is_even { __host__ __device__ bool operator()(const int &x) { return (x % 2) == 0; } }; ... int A[] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1}; int S[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; const int N = sizeof(A)/sizeof(int); thrust::partition(thrust::host, A, A + N, S, is_even()); // A is now {1, 1, 1, 1, 1, 0, 0, 0, 0, 0} // S is unmodified
See also
See also
- Parameters:
exec – The execution policy to use for parallelization.
first – The beginning of the sequence to reorder.
last – The end of the sequence to reorder.
stencil – The beginning of the stencil sequence.
pred – A function object which decides to which partition each element of the sequence
[first, last)belongs.
- Template Parameters:
DerivedPolicy – The name of the derived execution policy.
ForwardIterator – is a model of Forward Iterator, and
ForwardIteratoris mutable.InputIterator – is a model of Input Iterator, and
InputIterator'svalue_typeis convertible toPredicate'sargument type.Predicate – is a model of Predicate.
- Returns:
An iterator referring to the first element of the second partition, that is, the sequence of the elements whose stencil elements do not satisfy
pred.- Pre:
The ranges
[first,last)and[stencil, stencil + (last - first))shall not overlap.
partition(first, last, stencil, pred)#
-
template<typename ForwardIterator, typename InputIterator, typename Predicate>
ForwardIterator thrust::partition( - ForwardIterator first,
- ForwardIterator last,
- InputIterator stencil,
- Predicate pred,
partitionreorders the elements[first, last)based on the function objectpredapplied to a stencil range[stencil, stencil + (last - first)), such that all of the elements whose corresponding stencil element satisfiespredprecede all of the elements whose corresponding stencil element fails to satisfy it. The postcondition is that, for some iteratormiddlein the range[first, last),pred(*stencil_i)istruefor every iteratorstencil_iin the range[stencil,stencil + (middle - first))andfalsefor every iteratorstencil_iin the range[stencil + (middle - first), stencil + (last - first)). The return value ofstable_partitionismiddle.Note that the relative order of elements in the two reordered sequences is not necessarily the same as it was in the original sequence. A different algorithm,
stable_partition, does guarantee to preserve the relative order.The following code snippet demonstrates how to use
partitionto reorder a sequence so that even numbers precede odd numbers.#include <thrust/partition.h> ... struct is_even { __host__ __device__ bool operator()(const int &x) { return (x % 2) == 0; } }; ... int A[] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1}; int S[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; const int N = sizeof(A)/sizeof(int); thrust::partition(A, A + N, S, is_even()); // A is now {1, 1, 1, 1, 1, 0, 0, 0, 0, 0} // S is unmodified
See also
See also
- Parameters:
first – The beginning of the sequence to reorder.
last – The end of the sequence to reorder.
stencil – The beginning of the stencil sequence.
pred – A function object which decides to which partition each element of the sequence
[first, last)belongs.
- Template Parameters:
ForwardIterator – is a model of Forward Iterator, and
ForwardIteratoris mutable.InputIterator – is a model of Input Iterator, and
InputIterator'svalue_typeis convertible toPredicate'sargument type.Predicate – is a model of Predicate.
- Returns:
An iterator referring to the first element of the second partition, that is, the sequence of the elements whose stencil elements do not satisfy
pred.- Pre:
The ranges
[first,last)and[stencil, stencil + (last - first))shall not overlap.