O algoritmo std::min_element de STL em C++
-
Use o algoritmo
std::min_element
para encontrar o menor elemento no intervalo em C++ -
Use o algoritmo
std::minmax_element
para encontrar o menor e o maior elemento no intervalo
Este artigo irá explicar como usar o algoritmo std::min_element
do STL em C++.
Use o algoritmo std::min_element
para encontrar o menor elemento no intervalo em C++
Os algoritmos STL incluem funções de pesquisa mínimo / máximo genéricas que podem operar em intervalos de contêiner. std::min_element
é uma dessas funções que recupera o menor elemento no intervalo fornecido. Os elementos são comparados com operador <
quando a função de comparação não é explicitamente especificada. Portanto, se o contêiner armazena os objetos definidos pelo usuário, ele deve ter o operador correspondente definido.
O intervalo deve satisfazer os requisitos de LegacyForwardIterator
. A função std::min_element
aceita dois iteradores e retorna o iterador para o menor elemento do intervalo. Se o intervalo incluir várias instâncias do menor elemento, o algoritmo retorna o iterador para o primeiro deles. Quando o intervalo fornecido está vazio, o segundo iterador do argumento é retornado.
O exemplo a seguir mostra o uso simples de std::min_element
para o contêiner vector
. Observe que quando queremos a posição numérica do menor elemento, deve-se utilizar a função std::distance
para calculá-la.
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> v1 = {"ztop", "htop", "mtop", "ktop", "ptop"};
vector<int> v2 = {111, 43, 12, 41, 34, 54, 13};
auto ret = std::min_element(v1.begin(), v1.end());
cout << "min_element(v1): " << std::setw(4) << *ret
<< " at position: " << std::distance(v1.begin(), ret) << endl;
auto ret2 = std::min_element(v2.begin(), v2.end());
cout << "min_element(v2): " << std::setw(4) << *ret2
<< " at position: " << std::distance(v2.begin(), ret2) << endl;
return EXIT_SUCCESS;
}
min_element(v1): htop at position: 1
min_element(v2): 12 at position: 2
Use o algoritmo std::minmax_element
para encontrar o menor e o maior elemento no intervalo
Outro algoritmo poderoso incluído no STL é std::minmax_element
. Ele recupera os menores e os maiores elementos em um determinado intervalo. std::minmax_element
retorna o valor std::pair
armazenando o menor elemento como o primeiro membro. Observe que este algoritmo retorna o último elemento quando há vários valores qualificados para o maior valor no intervalo. Lembre-se de que esses dois algoritmos também têm sobrecargas que podem incluir o terceiro parâmetro que denota a função de comparação personalizada.
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> v1 = {"ztop", "htop", "mtop", "ktop", "ptop"};
vector<int> v2 = {111, 43, 12, 41, 34, 54, 13};
auto ret3 = std::minmax_element(v1.begin(), v1.end());
cout << "min (v1): " << std::setw(4) << *ret3.first
<< "| max (v1): " << std::setw(4) << *ret3.second << endl;
auto ret4 = std::minmax_element(v2.begin(), v2.end());
cout << "min (v2): " << std::setw(4) << *ret4.first
<< "| max (v2): " << std::setw(4) << *ret4.second << endl;
return EXIT_SUCCESS;
}
Produção:
min (v1): htop| max (v1): ztop
min (v2): 12| max (v2): 111
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook