Valor máximo y mínimo de un vector en C++
-
Use un bucle
for
para encontrar el valor máximo y mínimo de un vector en C++ -
Utilice las funciones
std::max_element
ystd::min_element
para obtener el valor máximo y mínimo de un vector en C++ -
Utilice la función
std::minmax_element
para obtener los valores máximo y mínimo de un vector en C++
Un vector en C++ no es más que una matriz dinámica que puede cambiar de tamaño automáticamente. Dado que un vector es un contenedor de elementos, es posible que queramos averiguar el valor máximo o mínimo que contiene un vector.
Mientras tratamos con vectores, podemos usar un bucle tal como lo hacemos cuando buscamos el elemento máximo o mínimo en una matriz. Este artículo también analizará algunas funciones de la biblioteca que nos ayudan a hacer lo mismo.
Use un bucle for
para encontrar el valor máximo y mínimo de un vector en C++
En el siguiente ejemplo, tenemos dos plantillas de funciones; maxElement
para encontrar el elemento máximo y minElement
para encontrar el elemento mínimo. Dentro del bloque main()
, definimos un vector, marks
y lo pasamos a las funciones de plantilla.
El valor devuelto por la función minElement
y la función maxElement
se almacena en las variables, min,
y max
, respectivamente, y se imprimen estas variables en la pantalla. La función maxElement
tiene una variable max
, que contiene el valor de la macro INT_MIN
, y luego usamos el bucle for
para repasar todos los elementos del vector y compararlos con el valor almacenado en max
.
Actualizamos el valor de max
si encontramos un elemento mayor que el valor almacenado en él, y se hace para todos los elementos del vector. La función maxElement
devuelve el último valor actualizado de la variable max
, y así obtenemos el valor máximo del vector marks
.
La función minElement
también funciona de la misma manera y devuelve el valor mínimo del vector. Veamos un ejemplo del uso de un bucle para encontrar el valor máximo y mínimo de un vector en C++.
Código:
#include <climits>
#include <iostream>
#include <vector>
using namespace std;
template <typename D>
int maxElement(vector<D> const &v) {
int max = INT_MIN;
for (const D &i : v) {
if (max < i) {
max = i;
}
}
return max;
}
template <typename D>
int minElement(vector<D> const &v) {
int min = INT_MAX;
for (const D &i : v) {
if (min > i) {
min = i;
}
}
return min;
}
int main() {
vector<int> marks = {23, 45, 65, 23, 43, 67, 87, 12};
int min = minElement(marks);
int max = maxElement(marks);
cout << "The minimum marks are: " << min << endl;
cout << "The maximum marks are: " << max << endl;
return 0;
}
Producción :
The minimum marks are: 12
The maximum marks are: 87
Este es un enfoque fácil para encontrar los elementos máximos y mínimos de un vector en C++.
Utilice las funciones std::max_element
y std::min_element
para obtener el valor máximo y mínimo de un vector en C++
Para encontrar los valores máximo y mínimo de un vector en C++, podemos usar las funciones std::max_element
y std::min_element
respectivamente.
La función max_element
devuelve un iterador que apunta al valor más grande, y la función min_element
devuelve un iterador que apunta al valor más pequeño, ambos en el rango (start, end)
.
Sintaxis:
*min_element(start_index, end_index);
*max_element(start_index, end_index);
En el siguiente ejemplo, primero pasamos los punteros al inicio y al final del vector, marks
a ambas funciones, max_element,
y min_element
como argumentos. Los valores devueltos por las funciones max_element
y min_element
se almacenan en las variables max
y min
, respectivamente.
Código:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> marks = {23, 34, 56, 75, 23, 44, 58};
int max = *max_element(marks.begin(), marks.end());
int min = *min_element(marks.begin(), marks.end());
cout << "The minimum marks are: " << min << endl;
cout << "The maximum marks are: " << max << endl;
return 0;
}
Producción :
The minimum marks are: 23
The maximum marks are: 75
Tenga en cuenta que ambas funciones se pueden usar con la ayuda de una función predefinida para hacer comparaciones. Lea más sobre estas funciones aquí.
Utilice la función std::minmax_element
para obtener los valores máximo y mínimo de un vector en C++
El std::minmax_element
es más como una versión condensada de las dos funciones anteriores. En lugar de usarlos por separado, podemos usar la función std::minmax_element
para obtener un par de iteradores como valor devuelto.
Esta función devolverá un par de iteradores donde el primer valor apunta al elemento mínimo y el segundo al elemento máximo. Por ejemplo, pasamos el primer y último índice del vector, marcas
, a la función minmax_element
, y el valor que devuelve esta función se almacena en la variable, res
, que se define con el auto
palabra clave.
Luego, usamos el operador punto (.)
para separar los valores mínimo y máximo del par de iteradores y almacenarlos en las variables, min
y max
. Usamos la función minmax_element
para obtener los valores máximo y mínimo de un vector en C++.
Código:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> marks = {34, 23, 56, 75, 23, 67, 88, 12};
auto res = minmax_element(marks.begin(), marks.end());
int min = *res.first;
int max = *res.second;
cout << "The minimum marks are: " << min << endl;
cout << "The maximum marks are: " << max << endl;
return 0;
}
Producción :
The minimum marks are: 12
The maximum marks are: 88
A continuación se muestra la versión modificada del código anterior que también devuelve el índice del valor máximo y mínimo del vector. Esto se hace usando la función std::distance
, que calcula el número de elementos entre el primero y el último.
Código:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> marks = {34, 23, 56, 75, 23, 67, 88, 12};
auto res = minmax_element(marks.begin(), marks.end());
int min = *res.first;
int max = *res.second;
int indx_max = distance(marks.begin(), res.first);
int indx_min = distance(marks.begin(), res.second);
cout << "The minimum marks are: " << min << endl;
cout << "Found at index: " << indx_min << endl;
cout << "The maximum marks are: " << max << endl;
cout << "Found at index: " << indx_max << endl;
return 0;
}
Producción :
The minimum marks are: 12
Found at index: 6
The maximum marks are: 88
Found at index: 7
Para obtener más información sobre esta función, consulte esta documentación. Se trata de cómo podemos obtener el valor máximo y mínimo de un vector en C++.