当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ std::minmax()、std::minmax_element()用法及代码示例


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

  1. minmax(a,b):此函数返回一对,其中第一个元素是两个元素中的最小值,第二个元素是两个元素中的最大值。
  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 << "\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<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; 
          
    }

    输出:


    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
    


相关用法


注:本文由纯净天空筛选整理自 std::minmax() and std::minmax_element() in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。