min_element
De cppreference.com
Sintaxis:
#include <algorithm> template< class ForwardIterator > ForwardIterator min_element( ForwardIterator inicio, ForwardIterator fin ); template< class ForwardIterator, class Compare > ForwardIterator min_element( ForwardIterator inicio, ForwardIterator fin, Comparador p );
El algoritmo min_element y su símil max_element encuentran el menor (o mayor) elemento en el rango [inicio, final). La primera forma usa el operador < mientras la segunda usa un criterio de comparación p.
min_element y max_element se ejecutan en tiempo lineal respecto de la cantidad de elementos en el rango.
Contenido |
[editar] 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.
[editar] Valor Retornado
Un iterador apuntando al lugar donde se encuentra el elemento menor.
[editar] Función Equivalente
template<class ForwardIterator, class Comparador> ForwardIterator min_element(ForwardIterator inicio, ForwardIterator fin, Comparador p) { if (inicio == fin)) { return fin; } ForwardIterator candidato = inicio; ++inicio; for (; inicio != fin; ++inicio) { if (p(*inicio, *candidato)) { candidato = inicio; } } return candidato; }
[editar] 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::min_element(v.begin(), v.end()); std::cout << "min element at: " << std::distance(v.begin(), result); return 0; }
Salida:
max element at: 2