Spis treści

Algorytm min_element max_element

min_element i max_element to algorytmy zwracające najmniejszy/największy element z zakresu [firstElement, lastElement). firstElement i lastElement są iteratorami wskazującymi na pozycję w kontenerze (np. listy, wektora). Porównywanie jest realizowane jest za pomocą domyślnego (wbudowanego) operatora mniejszości < . Dodatkowo możliwe jest podanie jako trzeciego parametru funkcji w roli operatora <, która będzie użyta do znalezienia najmniejszego/największego elementu. Funkcja ta zwraca true jeżeli jej pierwszy parametr jest mniejszy od drugiego parametru.

Deklaracja

W pliku nagłówkowym algorithm

min_element, Pierwsza wersja przyjmuje jako parametr zakres:

template <class ForwardIterator>
  ForwardIterator min_element ( ForwardIterator first, ForwardIterator last );

Druga wersja przyjmuje jako parametr zakres i operator porównujący:

template <class ForwardIterator, class Compare>
  ForwardIterator min_element ( ForwardIterator first, ForwardIterator last,
                                Compare comp );

max_element, Pierwsza wersja przyjmuje jako parametr zakres:

template <class ForwardIterator>
  ForwardIterator max_element ( ForwardIterator first, ForwardIterator last );

Druga wersja przyjmuje jako parametr zakres i operator porównujący:

template <class ForwardIterator, class Compare>
  ForwardIterator max_element ( ForwardIterator first, ForwardIterator last,
                                Compare comp );

Równoważny kod:

template <class ForwardIterator>
  ForwardIterator min_element ( ForwardIterator first, ForwardIterator last )
{
  ForwardIterator lowest= first;
  if (first==last) return last;
  while (++first!=last)
    if (*first<*lowest)    // or: if (comp(*first,*lowest)) for the comp version
      lowest=first;
  return lowest;
}

Parametry

Zwracana wartość

Iterator wskazujący na element najmniejszy/największy

Ograniczenia

Złożoność

Liniowa: wykonuje operacje porównania n-1 razy, gdzie n to ilość elementów w zakresie