max_element

Da cppreference.com
Ir para: navegação, pesquisa
#include <algorithm>
 
template< class ForwardIterator >
ForwardIterator max_element( ForwardIterator first, ForwardIterator last );
 
template< class ForwardIterator, class Compare >
ForwardIterator max_element( ForwardIterator first, ForwardIterator last, Compare p );

Encontra o maior elemento na sequência delimitada por [first, last). Uma versão da função usa o operator< para comparar os elementos, e a outra usa a função de comparação p.

Índice

[editar] Parâmetros

first, last - a sequência de elementos que se deseja examinar

comp - função de comparação que retorna true se o primeiro parâmetro é menor que o segundo

[editar] Retorno

iterador apontando para o maior elemento

[editar] Função equivalente

Primeira versão:

template<class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last) 
{
    if (first == last) {
        return last;
        }
    ForwardIterator largest = first;
    ++first;
    for (; first != last; ++first) {
        if (*largest < *first) {
            largest = first;
        }
    }
    return largest;
}

Segunda versão:

template<class ForwardIterator, class Compare>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last, Compare comp) 
{
    if (first == last) {
        return last;
        }
    ForwardIterator largest = first;
    ++first;
    for (; first != last; ++first) {
        if (comp(*largest, *first)) {
            largest = first;
        }
    }
    return largest;
}

[editar] Exemplo

#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 << "maior elemento na posicao: " << std::distance(v.begin(), result);
 
    return 0;
}

Saída:

maior elemento na posicao: 5

[editar] Complexidade

linear na distância entre first e last

[editar] Veja também

max, min, min_element

Ferramentas pessoais
Espaços nominais
Variantes
Acções
Navegação
Ferramentas
Noutras línguas