std::vector<int> data {2, 12, 3, 5, 17, -11, 113, 117, 19}; std::cout << "From values "; std::copy(std::begin(data), std::end(data),std::ostream_iterator<int>{std::cout, " "}); std::cout << "n Min = " << *std::min_element(std::begin(data), std::end (data))<< " Max = " << *std::max_element (std::begin (data), std::end(data))<< std::endl; auto start_iter = std::begin(data) + 2; auto end_iter = std::end(data) - 2; auto pr = std::minmax_element(start_iter, end_iter); // Get min and max std::cout << "From values "; std::copy(start_iter, end_iter, std::ostream_iterator<int>{std::cout, " "}); std::cout << "n Min = "<< *pr.first << " Max = " << *pr.second << std::endl;min_element() 和 max_element() 被用來從 data 中查詢最小值和最大值。minmax_element() 會被應用到同一個序列上,但會略過前兩個和後兩個元素。執行這段程式碼會輸出下面的內容:
From values 2 12 3 5 17 -11 113 117 19
Min = -11 Max = 117
From values 3 5 17 -11 113
Min = -11 Max = 113
auto words = {string {"one"}, string {"two"}, string {"three"}, string {"four"}, string {"five"}, string {"six"}, string {"seven"}, string {"eight"}}; std::cout << "Min = " << std::min(words)<< std::endl;//Min = eight auto pr = std::minmax(words, [] (const strings s1, const strings s2){return s1.back() < s2.back();}); std::cout << "Min = " << pr.first << " Max = " << pr.second<< std::endl; // Min = one Max = sixwords 是 string 物件的一個初始化列表。元素都是 string 物件很重要。如果使用簡單的 char*,那麼演算法將無法正常工作,因為比較的是地址而不是 string 的內容。min() 演算法會用 string 物件預設的 operator<() 來確定 words 中的最小物件,然後用 minmax() 找出列表中最小和最大物件,minmax() 使用一個自定義的比較字串的最後一個字元的比較函數。結果顯示在註釋中。也有接受函數物件作為定義比較的最後一個引數的 min() 和 max() 版本。