Template Function thrust::min_element(ForwardIterator, ForwardIterator, BinaryPredicate)¶
Function Documentation¶
-
template<typename
ForwardIterator, typenameBinaryPredicate>
ForwardIteratorthrust::min_element(ForwardIterator first, ForwardIterator last, BinaryPredicate comp) min_elementfinds the smallest element in the range[first, last). It returns the first iteratoriin[first, last)such that no other iterator in[first, last)points to a value smaller than*i. The return value islastif and only if[first, last)is an empty range.The two versions of
min_elementdiffer in how they define whether one element is less than another. This version compares objects using a function objectcomp. Specifically, this version ofmin_elementreturns the first iteratoriin[first, last)such that, for every iteratorjin[first, last),comp(*j, *i)isfalse.The following code snippet demonstrates how to use
min_elementto find the smallest element of a collection of key-value pairs.- Return
An iterator pointing to the smallest element of the range
[first, last), if it is not an empty range;last, otherwise.- Parameters
first: The beginning of the sequence.last: The end of the sequence.comp: A binary predicate used for comparison.
- Template Parameters
ForwardIterator: is a model of Forward Iterator, andForwardIterator'svalue_typeis convertible to bothcomp'sfirst_argument_typeandsecond_argument_type.BinaryPredicate: is a model of Binary Predicate.
#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}