thrust

◆ max_element() [3/4]

template<typename DerivedPolicy , typename ForwardIterator , typename BinaryPredicate >
__host__ __device__ ForwardIterator thrust::max_element ( const thrust::detail::execution_policy_base< DerivedPolicy > &  exec,
ForwardIterator  first,
ForwardIterator  last,
BinaryPredicate  comp 
)

max_element finds the largest element in the range [first, last). It returns the first iterator i in [first, last) such that no other iterator in [first, last) points to a value larger than *i. The return value is last if and only if [first, last) is an empty range.

The two versions of max_element differ in how they define whether one element is less than another. This version compares objects using a function object comp. Specifically, this version of max_element returns the first iterator i in [first, last) such that, for every iterator j in [first, last), comp(*i, *j) is false.

The algorithm's execution is parallelized as determined by exec.

Parameters
execThe execution policy to use for parallelization.
firstThe beginning of the sequence.
lastThe end of the sequence.
compA binary predicate used for comparison.
Returns
An iterator pointing to the largest element of the range [first, last), if it is not an empty range; last, otherwise.
Template Parameters
DerivedPolicyThe name of the derived execution policy.
ForwardIteratoris a model of Forward Iterator, and ForwardIterator's value_type is convertible to both comp's first_argument_type and second_argument_type.
BinaryPredicateis a model of Binary Predicate.

The following code snippet demonstrates how to use max_element to find the largest element of a collection of key-value pairs using the thrust::host execution policy for parallelization.

#include <thrust/extrema.h>
...
struct key_value
{
int key;
int value;
};
struct compare_key_value
{
__host__ __device__
bool operator()(key_value lhs, key_value rhs)
{
return lhs.key < rhs.key;
}
};
...
key_value data[4] = { {4,5}, {0,7}, {2,3}, {6,1} };
key_value *largest = thrust::max_element(thrust::host, data, data + 4, compare_key_value());
// largest == data + 3
// *largest == {6,1}
See also
http://www.sgi.com/tech/stl/max_element.html