min_element

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

Encontra o menor 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 menor elemento

[editar] Função equivalente

Primeira versão:

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

Segunda versão:

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

[editar] Exemplo

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

Saída:

menor elemento na posicao: 2

[editar] Complexidade

linear na distância entre first e last

[editar] Veja também

max, max_element, min

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