函數簽名
template
ForwardIt min_element(ForwardIt first, ForwardIt last);
template
ForwardIt min_element(ForwardIt first, ForwardIt last, Compare comp);
// max_element 同理
- 返回指向最小/最大元素的迭代器,區間為空返回
last。
comp 為二元謂詞,comp(a,b) 為 true 表示 a 小於 b。
- 適用於所有支援
ForwardIterator 的容器。
實戰範例
#include
#include
#include
#include // abs
using namespace std;
bool absLess(int a, int b) { return abs(a) < abs(b); }
int main() {
deque d = {-12, 2,3,4,5,6,7,8, -3,-2,-1,0,1,2,3,4,5};
// -12 2 3 4 5 6 7 8 -3 -2 -1 0 1 2 3 4 5
cout << "Min: " << *min_element(d.begin(), d.end()) << endl; // -12
cout << "Max: " << *max_element(d.begin(), d.end()) << endl; // 8
cout << "Min |abs|: " << *min_element(d.begin(), d.end(), absLess) << endl; // -1 (abs=1)
cout << "Max |abs|: " << *max_element(d.begin(), d.end(), absLess) << endl; // -12 (abs=12)
}
注意事項
- 自定義比較函數必須嚴格弱序(Strict Weak Ordering)。
- 若需索引而非迭代器,可用
distance(begin, it)。
minmax_element (C++11) 可單次遍歷同時獲得最小/最大迭代器對。