thrust

◆ max_element() [4/4]

template<typename ForwardIterator , typename BinaryPredicate >
ForwardIterator thrust::max_element ( 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.

Parameters
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
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.

#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(data, data + 4, compare_key_value());
// largest == data + 3
// *largest == {6,1}
See also
http://www.sgi.com/tech/stl/max_element.html