Поиск минимального и максимального значений

Для поиска минимального и максимального значений предназначены следующие функции:

  • min() и max() — сравнивают два значения или значения списка инициализации и возвращают минимальное или максимальное значения соответственно:
// #include <algorithm>
std::cout << std::min(1, 2) << std::endl;      // 1
std::cout << std::max(1, 2) << std::endl;      // 2
std::cout << std::min({1, 2, 3}) << std::endl; // 1
std::cout << std::max({1, 2, 3}) << std::endl; // 3

По умолчанию сравнение производится с помощью оператора <. В последнем параметре можно указать пользовательскую функцию сравнения:

std::cout << std::min(1, 2,
       [](int a, int b){ return a < b; }) << std::endl; // 1
std::cout << std::max({1, 2, 3},
       [](int a, int b){ return a < b; }) << std::endl; // 3
  • minmax() — сравнивает два значения или значения списка инициализации и возвращает объект класса pair. Через свойство first будет доступно минимальное значение, а через свойство second — максимальное значение:
// #include <algorithm>
auto p1 = std::minmax(2, 1);
std::cout << p1.first << ' ' << p1.second << std::endl; // 1 2
auto p2 = std::minmax({1, 2, 3});
std::cout << p2.first << ' ' << p2.second << std::endl; // 1 3

По умолчанию сравнение производится с помощью оператора <. В последнем параметре можно указать пользовательскую функцию сравнения:

auto p1 = std::minmax(2, 1,
               [](int a, int b){ return a < b; });
std::cout << p1.first << ' ' << p1.second << std::endl; // 1 2
auto p2 = std::minmax({1, 2, 3},
               [](int a, int b){ return a < b; });
std::cout << p2.first << ' ' << p2.second << std::endl; // 1 3
  • min_element() и max_element() — возвращают итераторы, указывающие на элементы с минимальным или максимальным значениями из контейнера соответственно. Диапазон внутри контейнера задается с помощью двух итераторов:
// #include <algorithm>
std::vector<int> arr = {1, 2, 3};
std::cout << *std::min_element(arr.begin(), arr.end())
          << std::endl;      // 1
std::cout << *std::max_element(arr.begin(), arr.end())
          << std::endl;      // 3

Найдем минимальное значение в обычном массиве:

const int ARR_SIZE = 3;
int arr[ARR_SIZE] = {1, 2, 3};
std::cout << *std::min_element(arr, arr + ARR_SIZE)
          << std::endl;      // 1

По умолчанию сравнение производится с помощью оператора <. В последнем параметре можно указать пользовательскую функцию сравнения:

std::vector<int> arr = {1, 2, 3};
std::cout << *std::min_element(arr.begin(), arr.end(),
              [](const int &a, const int &b){ return a < b; })
          << std::endl;      // 1
  • minmax_element() — сравнивает значения элементов контейнера и возвращает объект класса pair. Через свойство first будет доступен итератор, указывающий на элемент с минимальным значением, а через свойство second — итератор, указывающий на элемент с максимальным значением. Диапазон внутри контейнера задается с помощью двух итераторов:
// #include <algorithm>
std::vector<int> arr = {1, 2, 3};
auto p = std::minmax_element(arr.begin(), arr.end());
std::cout << *p.first << ' ' << *p.second << std::endl; // 1 3

По умолчанию сравнение производится с помощью оператора <. В последнем параметре можно указать пользовательскую функцию сравнения:

std::vector<int> arr = {1, 2, 3};
auto p = std::minmax_element(arr.begin(), arr.end(),
              [](const int &a, const int &b){ return a < b; });
std::cout << *p.first << ' ' << *p.second << std::endl; // 1 3

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов