Traducciones de esta página?:

max_element

Sintaxis:

#include <algorithm>
 
template< class ForwardIterator >
ForwardIterator max_element( ForwardIterator inicio, ForwardIterator fin );
 
template< class ForwardIterator, class Compare >
ForwardIterator max_element( ForwardIterator inicio, ForwardIterator fin, Comparador p );

El algoritmo max_element y su símil min_element encuentran el mayor (o menor) elemento en el rango [inicio, final). La primera forma usa el operador < mientras la segunda usa un criterio de comparación p.

max_element y min_element se ejecutan en tiempo lineal respecto de la cantidad de elementos en el rango.

Parámetros

inicio, fin -- iteradores que delimitan el rango a examinar.

p - un criterio de comparación que sigue el comportamiento de operator<: tiene la firma bool p(T, T) y retorna true si el primer argumento es “menor” que el segundo.

Valor Retornado

Un iterador apuntando al lugar donde se encuentra el elemento mayor.

Función Equivalente

template<class ForwardIterator, class Comparador>
ForwardIterator max_element(ForwardIterator inicio, ForwardIterator fin, Comparador p)
{
    if (inicio == fin)) {
        return fin;
        }
    ForwardIterator candidato = inicio;
    ++inicio;
    for (; inicio != fin; ++inicio) {
        if (p(*candidato, *inicio)) {
            candidato = inicio;
        }
    }
    return candidato;
}

Ejemplo

#include <algorithm>
#include <iostream>
#include <vector>
 
int main()
{
    int data[] = { 3, 1, 4, 1, 5, 9 };
    std::vector<int> v(data, data+6);
 
    std::vector<int>::iterator result = std::max_element(v.begin(), v.end());
    std::cout << "max element at: " << std::distance(v.begin(), result);
 
    return 0;
}

Salida:

max element at: 5

Ver También