C++算法min()函數有以下3種使用方式:
- 它比較在其參數中傳遞的兩個值並返回它們之間較小的值,如果兩者相等,則返回第一個。
- 它還使用由用戶定義的二元函數比較這兩個值,然後在 std::min( 中作為參數傳遞)。
- 它還用於查找給定列表中的最小元素,如果列表中有多個最小元素,則返回第一個。
第一個版本使用 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 minmax()用法及代碼示例
- C++ Algorithm minmax_element()用法及代碼示例
- C++ Algorithm min_element()用法及代碼示例
- C++ Algorithm max_element()用法及代碼示例
- C++ Algorithm max()用法及代碼示例
- C++ Algorithm merge()用法及代碼示例
- C++ Algorithm make_heap()用法及代碼示例
- C++ Algorithm remove_if()用法及代碼示例
- C++ Algorithm remove()用法及代碼示例
- C++ Algorithm set_union()用法及代碼示例
- C++ Algorithm next_permutation()用法及代碼示例
- C++ Algorithm upper_bound()用法及代碼示例
- C++ Algorithm remove_copy_if()用法及代碼示例
- C++ Algorithm random_shuffle()用法及代碼示例
- C++ Algorithm pop_heap()用法及代碼示例
- C++ Algorithm replace()用法及代碼示例
- C++ Algorithm set_intersection()用法及代碼示例
- C++ Algorithm lower_bound()用法及代碼示例
- C++ Algorithm transform()用法及代碼示例
- C++ Algorithm set_difference()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ Algorithm min()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。