Самый простой способ получить min
и max
из массива - использовать std :: minmax_element , предоставленный заголовком <algorithm>
. Чтобы написать функцию, возвращающую minmax
std::pair
, вы можете сделать:
/* returns <min, max> pair from arr of nelem */
std::pair<float*, float*> minmaxfloat (float *arr, size_t nelem)
{
return std::minmax_element (arr, arr + nelem);
}
Краткий пример:
#include <iostream>
#include <algorithm>
#include <utility>
/* returns <min, max> pair from arr of nelem */
std::pair<float*, float*> minmaxfloat (float *arr, size_t nelem)
{
return std::minmax_element (arr, arr + nelem);
}
int main (void) {
float arr[] = { 5, 4, 6, 3, 7, 2, 8, 1, 9 };
float min, max;
/* create minmax pair from call to minmaxfloat() */
std::pair<float*, float*> p1 = minmaxfloat (arr, sizeof arr/sizeof *arr);
min = *p1.first; /* assign min */
max = *p1.second; /* assign max */
std::cout << "min: " << min << " max: " << max << '\n';
}
( примечание: std::pair
будет состоять из двух указателей на элементы min
и max
в вашем массиве)
Пример использования / Вывод
$ ./bin/floatminmax
min: 1 max: 9
Это лучше, чем придумывать свои собственные. Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.