當我們需要在一組數據中找到最大值、最小值的時候,我們可以使用C++標準庫中的接口:min()、max()、minmax(),它們的作用如下:
min() : 返回隊列中的最小值
max() : 返回隊列中的最大值
minmax():以數據對的形式(pair)返回隊列中的最大值和最小值
其中miinmax()接口是始於C++11的
使用這個三個函數接口時,需要包含頭文件 algorithm
關於這三個接口的使用,代碼如下:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct st
{
int value;
st(int v):value(v){}
};
bool mincmp(st a, st b)
{
return a.value < b.value;
}
bool maxcmp(st a, st b)
{
return a.value < b.value;
}
int main()
{
st s1(1);
st s2(2);
st s3(3);
// min()
min(1, 2);
min(s1, s2, mincmp);
min({ s1,s2,s3 }, mincmp);
// max()
max(1, 2);
max(s1, s2, maxcmp);
max({ s1,s2,s3 }, maxcmp);
// minmax()
minmax(1, 2);
minmax(s1, s2, mincmp);
minmax({ s1, s2,s3 }, mincmp);
// 關於 minmax() 的返回值: pair<>數據對
pair<int, int> m1 = minmax(1, 2);
pair<st, st> m2 = minmax(s1, s2, mincmp);
pair<st, st> m3 = minmax({ s1,s2,s3 }, mincmp);
// 也可以使用自定義類型推導
auto m4 = minmax({ 1,2,3 });
cout << "first = " << m4.first << endl; // 1, first - 最小值
cout << "second= " << m4.second << endl; // 3,second - 最大值
return 0;
}
其中minmax()函數的返回值,類型爲pair,即數據對類型,其中first,代表數據中的最小值,second代表數據中的最大值。
當返回值聲明不便於書寫的時候,我們可以使用自動類型推導auto關鍵詞來進行聲明。例如:
auto res = minmax({1,2,3});
輸入結果,可以直接輸出數據對中的first和second變量:
auto res = minmax({ 1,2,3 });
cout << "min = " << res.first << endl;
cout << "max = " << res.second << endl;
謝謝閱讀