Для нахождения минимального числа, то имеет смысл для использования std::min_element
. К счастью, она поставляется с дополнительным параметром сравнения, который мы можем использовать: (sample here)
auto pos = std::min_element(std::begin(arr), std::end(arr),
[](const T &t1, const T &t2) {return t1 > 0 && (t2 <= 0 || t1 < t2);}
);
Вы просто должны быть осторожны, чтобы принять во внимание, что, если это сравнение положительного t1
отрицательного числа, это всегда должно быть правдой. Если ни один из элементов не будет положительным, это даст местоположение первого числа в массиве. Если 0 следует рассматривать как часть положительных результатов, измените t1 > 0
на t1 >= 0
и t2 <= 0
до t2 < 0
.
Http: //en.cppreference.com/w/cpp/algorithm ... –
Что ответ, если все элементы отрицательны ? –
в моей проблеме нет шансов на то, что происходит :) Но в этом случае у меня нет подсказки. – LoveMeow