У меня была проблема, и одна ее часть требовала, чтобы я неоднократно находил наименьший элемент в векторе, пока все они не были равны 0. Код, который я использовал для этого, был следующим:
loop
int minE = INT_MAX;
for(int z = 0; z < arr.size(); z++) {
if(arr[z] > 0) {
if(arr[z] < minE) minE = arr[z];
}
}
if(minE == INT_MAX) minE = 0; // I had a case to handle them being 0, so I turn them to 0 if all elements are <= 0
// other things (subtract minE from all positive elements and count elements with that turn to 0)
endloop
Теперь я понимаю, что, скорее всего, нет способа сделать это быстрее, чем линейное время, но мне было просто интересно, можно ли использовать какую-то функцию в STL чтобы достичь такого рода вещи, как min() from limits
или lower_bound
или min_element
или что-то еще, может быть?
edit: Только что понял, что проблема в основном заключается в подсчете сортировки, или просто подсчет сортировки, или, может быть, какой-то Небольшая модификация, вопрос скорее в библиотечных функциях, чем в проблеме, поэтому не обращайте внимания на этот текст!