📜  C++ STL中的std :: minmax()和std :: minmax_element()

📅  最后修改于: 2021-05-30 11:38:00             🧑  作者: Mango

C++定义的函数使用不同的函数在2个容器中或容器中获取最小和最大元素。但是也有一些函数可以使用单个函数获取最小和最大元素,“ minmax() ”函数可以为我们完成此任务。该函数在“ algorithm ”头文件中定义。本文将讨论其实现和其他相关功能。

  1. minmax(a,b):此函数返回一对,其中第一个元素是两个元素中的最小值第二个元素是两个元素中的最大值
  2. minmax(元素数组):该函数返回的结果与第一个版本相似。唯一的不同是,在此版本中,接受的参数是整数/字符串的列表,其中获得了最大值和最小值。当我们需要在列表中查找最大和最小元素而不进行排序时很有用。
    // C++ code to demonstrate the working of minmax()
      
    #include
    #include
    using namespace std;
      
    int main()
    {
          
    // declaring pair to catch the return value
    pair 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;
          
    }
    

    输出:

    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() :此函数的目的与上述函数相同,即查找最小和最大元素。但这在返回类型和接受的参数上有所不同。此函数接受开始和结束指针作为其参数,并用于查找范围内的最大和最小元素。此函数返回对指针,其第一个元素指向范围中最小元素的位置,第二个元素指向范围中最大元素的位置。如果最小值大于1,则第一个元素指向第一个出现的元素。如果最大数目超过1,则第二个元素指向最后出现的元素。
    // C++ code to demonstrate the working of minmax_element()
      
    #include
    #include
    #include
    using namespace std;
      
    int main()
    {
          
        // initializing vector of integers
        vector vi = { 5, 3, 4, 4, 3, 5, 3 };
              
        // declaring pair pointer to catch the return value
        pair::iterator, vector::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;
          
    }
    

    输出:

    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
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”