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


C++ Algorithm max()用法及代碼示例


C++算法max()函數有以下3種使用方式:

  • 它比較在其參數中傳遞的兩個值,並返回它們之間較大的值。如果兩者相等,則返回第一個。
  • 它還使用用戶定義的二元函數比較這兩個值,然後在 std::max( 中作為參數傳遞)。
  • 它還用於查找給定列表中的最大元素,如果列表中有多個最大元素,則返回第一個。

對於第一個版本使用運算符 < 比較元素,或者對於第二個版本使用給定的二進製比較函數 comp 比較元素。

用法

default (1)  template <class T> const T& max (const T& a, const T& b);     //until C++ 11

custom (2)    template <class T, class Compare>
                         const T& max (const T& a, const T& b, Compare comp);     //until C++ 11

default (1)    template <class T> const T& max (const T& a, const T& b);   //until C++ 14

custom (2)     template <class T, class Compare>
                   const T& max (const T& a, const T& b, Compare comp);            //until C++ 14

initializer list (3)    template <class T> T max (initializer_list<T> il);
                                 template <class T, class Compare>
                                T max (initializer_list<T> il, Compare comp);              //until C++ 14

default (1)   template <class T> constexpr const T& max (const T& a, const T& b);								     //since C++ 14
										       //since C++ 14

custom (2)    template <class T, class Compare>
                     constexp const T& max(const T& a, const T& b, Compare comp);
								    // since C++ 14

initializer list (3)   template <class T> constexpr T max (initializer_list<T> il);
                                template <class T, class Compare>
                                  constexpr T max (initializer_list<T> il, Compare comp);
								     //since C++ 14

參數

a:要比較的第一個值。

b:要比較的第二個值。

comp: 一個用戶定義的二元謂詞函數,它接受兩個參數,如果兩個參數是有序的,則返回真,否則返回假。它遵循嚴格的弱排序來對元素進行排序。

il:一個 initializer_list 與要比較的值。

返回值

它返回 a 和 b 的最大值。如果值相等,則返回 a。

返回 il 中的最大值。如果幾個值等於最大值,則返回最左邊的這樣的值。

複雜度

複雜性是線性的,比所比較的元素數量少一個。

異常

如果任何比較引發異常,則此函數將引發異常。

注意:無效的參數會導致未定義的行為。

例子1

讓我們看一個簡單的例子來演示 max() 的使用:

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
 
int main()
{
    cout << "larger of 1 and 9999:" << std::max(1, 9999) << '\n'
              << "larger of 'a', and 'b':" << max('a', 'b') << '\n'
              << "longest of \"foo\", \"bar\", and \"hello\":" <<
                  max( { "foo", "bar", "hello" },
                            [](const string& s1, const string& s2) {
                                 return s1.size() < s2.size();
                             }) << '\n';
    return 0;
}

輸出:

larger of 1 and 9999:9999
larger of 'a', and 'b':b
longest of "foo", "bar", and "hello":hello

例子2

讓我們看另一個簡單的例子來演示使用默認版本的 max() 的使用:

#include <iostream>     // std::cout
#include <algorithm>    // std::max

using namespace std;

int main () {
  cout << "max(1,2)==" << max(1,2) << '\n';
  cout << "max(2,1)==" << max(2,1) << '\n';
  cout << "max('a','z')==" << max('a','z') << '\n';
  cout << "max(3.14,2.73)==" << max(3.14,2.73) << '\n';
  return 0;
}

輸出:

max(1,2)==2
max(2,1)==2
max('a','z')==z
max(3.14,2.73)==3.14

例子3

讓我們看另一個簡單的例子來演示使用比較函數的 max() 的使用:

#include<iostream> 
#include<algorithm> 
using namespace std; 
  
// Defining the binary function 
bool comp(int a, int b) 
{ 
    return (a < b); 
} 
int main() 
{ 
    int a = 7; 
    int b = 28; 
      
    cout << max(a,b,comp) << "\n"; 
  
    // Returns the first one if both the numbers 
    // are same 
    cout << max(7,7,comp); 
  
return 0; 
}

輸出:

28
7

示例 4

讓我們看一個簡單的例子來查找列表中的最大元素:

#include<iostream> 
#include<algorithm> 
using namespace std; 
  
// Defining the binary function 
bool comp(int a, int b) 
{ 
    return (a < b); 
} 
int main() 
{ 
  
    // Finding the largest of all the numbers 
    cout << "Maximum element is:"<< max({1, 2, 3, 4, 5, 10, -1, 7},comp) << "\n"; 
  
return 0; 
}

輸出:

Maximum element is:10





相關用法


注:本文由純淨天空篩選整理自 C++ Algorithm max()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。