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


C++ Algorithm min()用法及代码示例


C++算法min()函数有以下3种使用方式:

  1. 它比较在其参数中传递的两个值并返回它们之间较小的值,如果两者相等,则返回第一个。
  2. 它还使用由用户定义的二元函数比较这两个值,然后在 std::min( 中作为参数传递)。
  3. 它还用于查找给定列表中的最小元素,如果列表中有多个最小元素,则返回第一个。

第一个版本使用 operator< 比较元素,第二个版本使用给定的二进制比较函数 comp 比较元素。

用法

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

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

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

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

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

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

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

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

参数

a:第一个要比较的值。

b:要比较的第二个值。

comp: 一个用户定义的二元谓词函数,它接受两个参数,如果两个参数按顺序返回真,否则返回假。它遵循严格的弱排序来对元素进行排序。

il:一个 initializer_list 与要比较的值。

返回值

它返回 a 和 b 中较小的一个。如果值相等,则返回 a。

返回 il 中的最小值。如果几个值等于最小值,则返回最左边的这样的值。

复杂度

复杂性是线性的,比所比较的元素数量少一个。

异常

如果任何比较引发异常,则此函数将引发异常。

请注意,无效参数会导致未定义的行为。

例子1

让我们看一个简单的例子来演示 min() 的使用:

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

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

输出:

smaller of 1 and 9999:1
smaller of 'a', and 'b':a
shortest of "foo", "bar", and "hello":foo

例子2

让我们看另一个简单的例子来演示使用默认版本的 min() 的使用:

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

using namespace std;

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

输出:

min(1,2)==1
min(2,1)==1
min('a','z')==a
min(3.14,2.72)==2.72

例子3

让我们看另一个简单的例子来演示 min() 使用谓词函数 comp 的使用:

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

输出:

5 
7

示例 4

让我们看一个简单的例子来查找列表中的最小元素:

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

输出:

smallest element in the list is:-1





相关用法


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