C++ std::min 用法與範例

本篇介紹 C++ 的 std::min 用法與範例,C++ std::min() 用來比較傳入的兩個數值並且回傳比較小的數值,

以下的 C++ std::min 用法與範例將分為這幾部分,

  • C++ std::min 兩數取最小值
  • std::min 多個數值中取最小值 (C++11)

那我們開始吧!

C++ std::min 兩數取最小值

C++ std::min 可以取各種變數類型的兩數最小值,包含 int, short, long, float, double 甚至是 char,
範例如下,比較 50 與 100 兩整數的話會回傳 50,比較 XY 兩字元的話會回傳 X,比較 3.6 與 5.4 兩浮點數數的話會回傳 3.6,

std-min.cpp
1
2
3
4
5
6
7
8
9
10
11
12
// g++ std-min.cpp -o a.out
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
cout << std::min(50, 100) << "\n";
cout << std::min('X', 'Y') << "\n";
cout << std::min(3.6f, 5.4f) << "\n";
return 0;
}

輸出:

1
2
3
50
X
3.6

std::min 多個數值中取最小值 (C++11)

這個是 C++11 才加入的功能,讓 std::min 可以接受多個數值作為輸入,然後回傳這當中的最小值,
寫法如下,第一種直接用 { } 大括號的方式將數值帶入,然後它會呼叫到 std::initializer_list 建構子,
第二種寫法是直接先宣告好 std::initializer_list, 再將其變數帶入 std::min,
第三種就是懶人寫法 auto ~~~

std-min2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// g++ std-min2.cpp -o a.out -std=c++11
#include <iostream>
#include <algorithm>
#include <typeinfo>

using namespace std;

int main() {
cout << std::min({2, 4, 6, 8}) << "\n";

std::initializer_list<int> array = {1, 3, 5, 7};
cout << std::min(array) << "\n";

auto array2 = {1, 3, 5, 7};
cout << std::min(array2) << "\n";
cout << typeid(array2).name() << "\n";

return 0;
}

輸出如下,這邊我們順便使用 typeid 來看看 auto 建立 array2 出來的變數類型是什麼,
關於 typeid 的用法可以參考這篇介紹,這邊只要知道它可以用來印出變數類型是什麼類型就好,
結果就是 St16initializer_listIiE,簡單說它就是 std::initializer_list,
所以編譯器會在編譯時期幫我們將 auto 自動轉換成 std::initializer_list,

1
2
3
4
2
1
1
St16initializer_listIiE

如果想要在 vector 這種容器裡面取出最小值的方法請參考std::min_element 這篇

以上就是 C++ std::min 用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其他參考
std::min - cppreference.com
https://en.cppreference.com/w/cpp/algorithm/min

其它相關文章推薦
C/C++ 新手入門教學懶人包
std::min_element 用法與範例
std::max 用法與範例
C++ virtual 的兩種用法
C/C++ 字串反轉 reverse
C/C++ call by value傳值, call by pointer傳址, call by reference傳參考 的差別
C++ 類別樣板 class template
std::sort 用法與範例
std::find 用法與範例
std::queue 用法與範例
std::map 用法與範例