返回兩值中的較小/較大值。支持自定義比較器。
cout << min(1,2) << endl; // 1
cout << max('a','z') << endl; // z
同時返回最小值和最大值,組成 pair。若相等則返回 {a,b}。支持初始化列表。
auto res = minmax({1,2,3,4,5});
cout << res.first << ' ' << res.second; // 1 5
返回指向範圍內最小/最大元素的迭代器。支持自定義比較器。
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
一次遍歷同時獲得最小和最大元素的迭代器,返回 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。