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

C++ STL 算法精要(12):min_element / max_element 尋找極值

     編輯:關於C++

函數簽名

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) 可單次遍歷同時獲得最小/最大迭代器對。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved