thrust::partition
Defined in thrust/partition.h
- 
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 object- predapplied to a stencil range- [stencil, stencil + (last - first)), such that all of the elements whose corresponding stencil element satisfies- predprecede all of the elements whose corresponding stencil element fails to satisfy it. The postcondition is that, for some iterator- middlein the range- [first, last),- pred(*stencil_i)is- truefor every iterator- stencil_iin the range- [stencil,stencil + (middle - first))and- falsefor every iterator- stencil_iin the range- [stencil + (middle - first), stencil + (last - first)). The return value of- stable_partitionis- middle.- 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 - stable_partition- See also - partition_copy- 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's- value_typeis convertible to- Predicate'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.