std::minmax() y std::minmax_element() en C++ STL

C++ definió funciones para obtener elementos más pequeños y más grandes entre 2 o en un contenedor usando diferentes funciones. Pero también hay funciones que se usan para obtener tanto el elemento más pequeño como el más grande usando una sola función, la función » minmax() » logra esta tarea por nosotros. Esta función se define en el archivo de encabezado » algoritmo «. Este artículo se ocuparía de su aplicación y de otras funciones conexas.

  1. minmax(a, b): esta función devuelve un par , en el que el primer elemento es el mínimo de los dos elementos y el segundo elemento es el máximo de 2 elementos.
  2. minmax (array de elementos): esta función regresa de manera similar a la primera versión. La única diferencia es que en esta versión, el argumento aceptado es una lista de enteros/strings entre las que se obtienen el máximo y el mínimo. Útil en los casos en que necesitamos encontrar elementos máximos y mínimos en la lista sin ordenar.

    // 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 << "\nThe 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 << "\n\nThe minimum value obtained is : ";
    cout << mnmx.first;
    cout << "\nThe maximum value obtained is : ";
    cout << mnmx.second;
          
    }

    Producción:

    The minimum value obtained is : 23
    The maximum value obtained is : 53
    
    The minimum value obtained is : 1
    The maximum value obtained is : 6
    
  3. minmax_element() : El propósito de esta función es el mismo que el de las funciones anteriores, es decir, encontrar el elemento mínimo y máximo. Pero difiere en el tipo de devolución y el argumento aceptado. Esta función acepta el puntero de inicio y final como su argumento y se utiliza para encontrar el elemento máximo y mínimo en un rango. Esta función devuelve el puntero de par , cuyo primer elemento apunta a la posición del elemento mínimo en el rango y el segundo elemento apunta a la posición del elemento máximo en el rango. Si hay más de 1 número mínimo, entonces el primer elemento apunta al primer elemento que aparece. Si hay más de 1 número máximo, entonces el segundo elemento apunta al último elemento que aparece.

    // 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;
          
    }

    Producción:

    The minimum value position obtained is : 1
    The maximum value position obtained is : 0
    
    The minimum value position obtained is : 1
    The maximum value position obtained is : 5
    

Este artículo es una contribución de Manjeet Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *