當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ Algorithm minmax_element()用法及代碼示例


C++ 算法 minmax_element() 函數用於返回一個pair,其中迭代器指向範圍[first, last) 中的最小值作為第一個元素,最大的作為第二個元素。

如果多個值等價於更小,則第一個迭代器指向這樣的值中的第一個,多個值等價於更大的值,第二個迭代器指向這樣的值中的最後一個。

對於第一個版本使用運算符 < 比較元素,或者對於第二個版本使用給定的二進製比較函數 comp 比較元素。

用法

default (1)      template <class ForwardIterator>
                         pair<ForwardIterator,ForwardIterator>
                           minmax_element (ForwardIterator first, ForwardIterator last);

custom (2)      template <class ForwardIterator, class Compare>
                         pair<ForwardIterator,ForwardIterator>
                  minmax_element (ForwardIterator first, ForwardIterator last, Compare comp);

參數

first:一個輸入迭代器,指示要比較的範圍的第一個位置。

last:一個輸入迭代器,指示要比較的範圍中過去的最後一個元素。

comp: 一個用戶定義的二元謂詞函數,它接受兩個參數,如果兩個參數按順序返回真,否則返回假。它遵循嚴格的弱排序來對元素進行排序。

il:一個 initializer_list 與要比較的值。

返回值

它將較小的值作為第一個元素返回,較大的值作為 [first, last) 範圍內的第二個元素返回。

如果多個值等價於更小,則第一個迭代器指向這樣的值中的第一個,多個值等價於更大的值,第二個迭代器指向這樣的值中的最後一個。

複雜度

複雜度是線性的,比所比較的元素數量少 1.5 倍。

數據競爭

訪問範圍 [first, last) 中的對象。

異常

如果任何比較引發異常,則此函數將引發異常。

注意:無效的參數會導致未定義的行為。

例子1

讓我們看一個簡單的例子來演示 minmax_element() 的使用:

#include <algorithm>
#include <iostream>
#include <vector>
using  namespace std;

int main()
{
    vector<int> v = { 3, 9, 1, 4, 2, 5, 9 };
 
    auto result = minmax_element(v.begin(), v.end());
    cout << "min element at:" << (result.first - v.begin()) << '\n';
    cout << "max element at:" << (result.second - v.begin()) << '\n';

    return 0;
}

輸出:

min element at:2
max element at:6

例子2

讓我們看另一個簡單的例子來演示使用默認版本的 minmax_element() 的使用:

#include <iostream>     // std::cout
#include <algorithm>    // std::minmax_element
#include <array>        // std::array

using namespace std;

int main () {
  array<int,7> foo {3,7,2,9,5,8,6};

  auto result = minmax_element (foo.begin(),foo.end());

  // print result:
  cout << "min is " << *result.first;
  cout << ", at position " << (result.first-foo.begin()) << '\n';
  cout << "max is " << *result.second;
  cout << ", at position " << (result.second-foo.begin()) << '\n';

  return 0;
}

輸出:

min is 2, at position 2
max is 9, at position 3

例子3

讓我們看另一個簡單的例子來演示使用比較函數的 minmax_element() 的使用:

#include<iostream> 
#include<algorithm> 
#include<vector> 
using namespace std; 
  
int main() 
{ 
    // initializing vector of integers 
    vector<int> vi = { 5, 3, 4, 4, 3, 5, 3 }; 
          
    // declaring pair pointer to catch the return value 
    pair<vector<int>::iterator, vector<int>::iterator> mnmx; 
          
    // using minmax_element() to find 
    // minimum and maximum element 
    // between 0th and 3rd number 
    mnmx = minmax_element(vi.begin(), vi.begin() + 4); 
          
    // printing position of minimum and maximum values. 
    cout << "The minimum value position obtained is:"; 
    cout << mnmx.first - vi.begin() << endl; 
          
    cout << "The maximum value position obtained is:"; 
    cout << mnmx.second - vi.begin() << endl; 
          
    cout << endl; 
          
    // using duplicated 
    // prints 1 and 5 respectively 
    mnmx = minmax_element(vi.begin(), vi.end()); 
          
    // printing position of minimum and maximum values. 
    cout << "The minimum value position obtained is:"; 
    cout << mnmx.first - vi.begin() << endl; 
          
    cout << "The maximum value position obtained is:"; 
    cout << mnmx.second - vi.begin()<< endl; 
    
    return 0;
}

輸出:

The minimum value position obtained is:1
The maximum value position obtained is:0

The minimum value position obtained is:1
The maximum value position obtained is:5





相關用法


注:本文由純淨天空篩選整理自 C++ Algorithm minmax_element()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。