thrust::minimum_element
требует, чтобы пользователь предоставил предикат сравнения. То есть функция, которая отвечает на вопрос «да или нет» «x
меньше y
?»
thrust::minimum
не является предикатом; он отвечает на вопрос «какой из x
или y
меньше?».
Чтобы найти наименьший элемент, используя minimum_element
, передайте предикат thrust::less
:
ptr_to_smallest_value = thrust::min_element(first, last, thrust::less<T>());
В качестве альтернативы, не пропустите ничего. thrust::less
по умолчанию:
ptr_to_smallest_value = thrust::min_element(first, last);
Если все, что вас интересует, это значение наименьшего элемента (не итератор , указывающий на наименьший элемент), вы можете объединить thrust::minimum
с thrust::reduce
:
smallest_value = thrust::reduce(first, last, std::numeric_limits<T>::max(), thrust::minimum<T>());