首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++11 標準庫新增算法:minmax、minmax_element 等用法詳解

     編輯:關於C++

舊有算法:min / max

返回兩值中的較小/較大值。支持自定義比較器。

cout << min(1,2) << endl; // 1
cout << max('a','z') << endl; // z

C++11 新增:minmax

同時返回最小值和最大值,組成 pair。若相等則返回 {a,b}。支持初始化列表。

auto res = minmax({1,2,3,4,5});
cout << res.first << ' ' << res.second; // 1 5

舊有算法:min_element / max_element

返回指向範圍內最小/最大元素的迭代器。支持自定義比較器。

vector v = {3,7,2,9,5,8,6};
auto min_it = min_element(v.begin(), v.end());
auto max_it = max_element(v.begin(), v.end());
cout << *min_it << ' ' << *max_it; // 2 9

C++11 新增:minmax_element

一次遍歷同時獲得最小和最大元素的迭代器,返回 pair<iterator, iterator>。

auto mm = minmax_element(v.begin(), v.end());
cout << "min: " << *mm.first << " at " << mm.first - v.begin() << endl;
cout << "max: " << *mm.second << " at " << mm.second - v.begin() << endl;

總結

C++11 這幾個算法減少了重複遍歷,代碼更簡潔高效。建議在需要同時獲取極值時優先使用 minmax / minmax_element。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved