當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。