Есть ли в С++ предопределенная функция для поиска минимального и максимального элемента из заданного массива? [дубликат]

avatar
dunubh
8 августа 2021 в 23:13
87
1
0

У меня есть массив

double weights[]={203.21, 17.24, 125.32, 96.167}

Я хочу вычислить минимальный и максимальный элемент с помощью функции, если она есть? Помогите пожалуйста

Источник

Ответы (1)

avatar
Nathan Pierson
8 августа 2021 в 23:16
3

Да, есть: std::minmax_element. Также есть std::max_element для нахождения только максимума и std::min_element для нахождения только минимума.


Применительно к вашему коду:

#include <algorithm>
#include <iterator>

int main() {

  double weights[]={203.21, 17.24, 125.32, 96.167};

  auto minMaxIterators = std::minmax_element(std::begin(weights), std::end(weights));

  // minMaxIterators is a pair of iterators. To find the actual doubles
  // themselves, we have to separate out the pair and then dereference.
  double minWeight = *(minMaxIterators.first);
  double maxWeight = *(minMaxIterators.second);

  // Alternately, using structured bindings to extract elements from the pair
  auto [minIt, maxIt] = std::minmax_element(std::begin(weights), std::end(weights));
  minWeight = *minIt;
  maxWeight = *maxIt;

  // Alternately, using min_element and max_element separately
  minWeight = *(std::min_element(std::begin(weights), std::end(weights)));
  maxWeight = *(std::max_element(std::begin(weights), std::end(weights)));
}
dunubh
8 августа 2021 в 23:20
0

интервал минВес ; int minWeight = std::max_element (0, sizeOf(minWeight)) ; Это правильный способ его использования? Спасибо за помощь

Remy Lebeau
9 августа 2021 в 01:05
1

@Zoori Нет, даже не близко. max_element() принимает пару итераторов, обозначающих диапазон значений в контейнере, а затем возвращает итератор элементу с наибольшим значением. Вам нужно разыменовать этот итератор, чтобы получить его значение.