thrust

◆ min_element() [4/4]

template<typename ForwardIterator , typename BinaryPredicate >
ForwardIterator thrust::min_element ( ForwardIterator  first,
ForwardIterator  last,
BinaryPredicate  comp 
)

min_element finds the smallest 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 smaller than *i. The return value is last if and only if [first, last) is an empty range.

The two versions of min_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 min_element returns the first iterator i in [first, last) such that, for every iterator j in [first, last), comp(*j, *i) 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 smallest 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 min_element to find the smallest 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 *smallest = thrust::min_element(data, data + 4, compare_key_value());
// smallest == data + 1
// *smallest == {0,7}
See also
http://www.sgi.com/tech/stl/min_element.html