std :: minmax () и std :: minmax_element () в C ++ STL
C ++ определяет функции для получения наименьшего и наибольшего элементов из 2 или в контейнере с использованием различных функций. Но есть также функции, которые используются для получения как наименьшего, так и наибольшего элемента с помощью одной функции, функция minmax () решает эту задачу за нас. Эта функция определена в заголовочном файле «алгоритма». Эта статья будет касаться его реализации и других связанных функций.
- minmax (a, b): эта функция возвращает пару , в которой 1-й элемент содержит минимум двух элементов, а 2-й элемент - максимум 2 элемента.
- minmax (массив элементов): эта функция возвращает аналогично первой версии. Единственное отличие состоит в том, что в этой версии принятый аргумент представляет собой список целых чисел / строк, среди которых получены максимум и минимум. Полезно в случаях, когда нам нужно найти максимальный и минимальный элементы в списке без сортировки.
// C++ code to demonstrate the working of minmax()
#include<iostream>
#include<algorithm>
using
namespace
std;
int
main()
{
// declaring pair to catch the return value
pair<
int
,
int
> mnmx;
// Using minmax(a, b)
mnmx = minmax(53, 23);
// printing minimum and maximum values
cout <<
"The minimum value obtained is : "
;
cout << mnmx.first;
cout <<
" The maximum value obtained is : "
;
cout << mnmx.second ;
// Using minmax((array of elements)
mnmx = minmax({2, 5, 1, 6, 3});
// printing minimum and maximum values.
cout <<
" The minimum value obtained is : "
;
cout << mnmx.first;
cout <<
" The maximum value obtained is : "
;
cout << mnmx.second;
}
Выход:
Минимальное полученное значение: 23 Максимальное полученное значение: 53 Минимальное полученное значение: 1 Максимальное полученное значение: 6
- minmax_element () : Цель этой функции такая же, как и у функций выше, т.е. найти минимальный и максимальный элемент. Но он отличается типом возвращаемого значения и принятым аргументом. Эта функция принимает указатели начала и конца в качестве аргумента и используется для поиска максимального и минимального элемента в диапазоне. Эта функция возвращает указатель пары , 1-й элемент которого указывает на позицию минимального элемента в диапазоне, а 2-й элемент указывает на положение максимального элемента в диапазоне. Если минимальных чисел больше 1, то 1-й элемент указывает на первый элемент. Если существует более одного максимального числа, то второй элемент указывает на последний встреченный элемент.
// C++ code to demonstrate the working of minmax_element()
#include<iostream>
#include<algorithm>
#include<vector>
using
namespace
std;
int
main()
{
// initializing vector of integers
vector<
int
> vi = { 5, 3, 4, 4, 3, 5, 3 };
// declaring pair pointer to catch the return value
pair<vector<
int
>::iterator, vector<
int
>::iterator> mnmx;
// using minmax_element() to find
// minimum and maximum element
// between 0th and 3rd number
mnmx = minmax_element(vi.begin(), vi.begin() + 4);
// printing position of minimum and maximum values.
cout <<
"The minimum value position obtained is : "
;
cout << mnmx.first - vi.begin() << endl;
cout <<
"The maximum value position obtained is : "
;
cout << mnmx.second - vi.begin() << endl;
cout << endl;
// using duplicated
// prints 1 and 5 respectively
mnmx = minmax_element(vi.begin(), vi.end());
// printing position of minimum and maximum values.
cout <<
"The minimum value position obtained is : "
;
cout << mnmx.first - vi.begin() << endl;
cout <<
"The maximum value position obtained is : "
;
cout << mnmx.second - vi.begin()<< endl;
}
Выход:
Полученная позиция минимального значения: 1 Полученная позиция максимального значения: 0 Полученная позиция минимального значения: 1 Полученная позиция максимального значения: 5
Эта статья предоставлена Манджитом Сингхом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.