Valor máximo y mínimo de un vector en C++

Shikha Chaudhary 12 octubre 2023
  1. Use un bucle for para encontrar el valor máximo y mínimo de un vector en C++
  2. Utilice las funciones std::max_element y std::min_element para obtener el valor máximo y mínimo de un vector en C++
  3. Utilice la función std::minmax_element para obtener los valores máximo y mínimo de un vector en C++
Valor 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++.

Artículo relacionado - C++ Vector