std :: minmax () и std :: minmax_element () в C ++ STL

Опубликовано: 31 Декабря, 2021

C ++ определяет функции для получения наименьшего и наибольшего элементов из 2 или в контейнере с использованием различных функций. Но есть также функции, которые используются для получения как наименьшего, так и наибольшего элемента с помощью одной функции, функция minmax () решает эту задачу за нас. Эта функция определена в заголовочном файле «алгоритма». Эта статья будет касаться его реализации и других связанных функций.

  1. minmax (a, b): эта функция возвращает пару , в которой 1-й элемент содержит минимум двух элементов, а 2-й элемент - максимум 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
    
  3. 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, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .



C++