Valeur maximale et minimale d'un vecteur en C++

Shikha Chaudhary 12 octobre 2023
  1. Utiliser une boucle for pour trouver la valeur maximale et minimale d’un vecteur en C++
  2. Utilisez les fonctions std::max_element et std::min_element pour obtenir la valeur maximale et minimale d’un vecteur en C++
  3. Utilisez la fonction std::minmax_element pour obtenir les valeurs maximales et minimales d’un vecteur en C++
Valeur maximale et minimale d'un vecteur en C++

Un vecteur en C++ n’est rien d’autre qu’un tableau dynamique qui peut se redimensionner automatiquement. Puisqu’un vecteur est un conteneur d’éléments, nous pouvons vouloir connaître la valeur maximale ou minimale qu’un vecteur contient.

Lorsque nous traitons de vecteurs, nous pouvons utiliser une boucle comme nous le faisons lorsque nous recherchons l’élément maximum ou minimum dans un tableau. Cet article examinera également certaines fonctions de la bibliothèque qui nous aident à faire de même.

Utiliser une boucle for pour trouver la valeur maximale et minimale d’un vecteur en C++

Dans l’exemple ci-dessous, nous avons deux modèles de fonction ; maxElement pour trouver l’élément maximum et minElement pour trouver l’élément minimum. Dans le bloc main(), nous définissons un vecteur, marks et le passons aux fonctions de modèle.

La valeur renvoyée par la fonction minElement et la fonction maxElement est stockée dans les variables, min, et max, respectivement, et ces variables sont imprimées à l’écran. La fonction maxElement a une variable max, qui contient la valeur de la macro INT_MIN, puis nous utilisons la boucle for pour parcourir tous les éléments du vecteur et les comparer à la valeur stockée dans max.

Nous mettons à jour la valeur de max si nous trouvons un élément supérieur à la valeur qui y est stockée, et ce pour tous les éléments du vecteur. La fonction maxElement renvoie la dernière valeur mise à jour de la variable max, et c’est ainsi que nous obtenons la valeur maximale du vecteur marks.

La fonction minElement fonctionne également de la même manière et renvoie la valeur minimale du vecteur. Prenons un exemple d’utilisation d’une boucle pour trouver la valeur maximale et minimale d’un vecteur en C++.

Code:

#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;
}

Production:

The minimum marks are: 12
The maximum marks are: 87

Il s’agit d’une approche simple pour trouver les éléments maximum et minimum d’un vecteur en C++.

Utilisez les fonctions std::max_element et std::min_element pour obtenir la valeur maximale et minimale d’un vecteur en C++

Pour trouver les valeurs maximales et minimales d’un vecteur en C++, nous pouvons utiliser respectivement les fonctions std::max_element et std::min_element.

La fonction max_element renvoie un itérateur qui pointe vers la plus grande valeur, et la fonction min_element renvoie un itérateur qui pointe vers la plus petite valeur, toutes deux dans l’intervalle (start, end).

Syntaxe:

*min_element(start_index, end_index);
*max_element(start_index, end_index);

Dans l’exemple suivant, nous passons d’abord les pointeurs vers le début et la fin du vecteur, marques aux deux fonctions, max_element et min_element comme arguments. Les valeurs retournées par les fonctions max_element, et min_element sont stockées respectivement dans les variables max et min.

Code:

#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;
}

Production:

The minimum marks are: 23
The maximum marks are: 75

Notez que ces deux fonctions peuvent être utilisées à l’aide d’une fonction prédéfinie pour effectuer des comparaisons. En savoir plus sur ces fonctions ici.

Utilisez la fonction std::minmax_element pour obtenir les valeurs maximales et minimales d’un vecteur en C++

Le std::minmax_element ressemble plus à une version condensée des deux fonctions ci-dessus. Au lieu de les utiliser séparément, nous pouvons utiliser la fonction std::minmax_element pour obtenir une paire d’itérateurs comme valeur renvoyée.

Cette fonction renverra une paire d’itérateurs où la première valeur pointe vers l’élément minimum et la seconde vers l’élément maximum. Par exemple, on passe le premier et le dernier index du vecteur, marks, à la fonction minmax_element, et la valeur retournée par cette fonction est stockée dans la variable, res, qui est définie avec le auto mot-clé.

Ensuite, nous utilisons l’opérateur dot(.) pour séparer les valeurs minimales et maximales de la paire d’itérateurs et les stocker dans les variables min et max. Nous utilisons la fonction minmax_element pour obtenir les valeurs maximales et minimales d’un vecteur en C++.

Code:

#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;
}

Production:

The minimum marks are: 12
The maximum marks are: 88

Vous trouverez ci-dessous la version modifiée du code ci-dessus qui renvoie également l’index de la valeur maximale et minimale du vecteur. Cela se fait à l’aide de la fonction std::distance, qui calcule le nombre d’éléments entre le premier et le dernier élément.

Code:

#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;
}

Production:

The minimum marks are: 12
Found at index: 6
The maximum marks are: 88
Found at index: 7

Pour en savoir plus sur cette fonction, consultez cette documentation. Il s’agit de savoir comment obtenir la valeur maximale et minimale d’un vecteur en C++.

Article connexe - C++ Vector