Valeur maximale et minimale d'un vecteur en C++
-
Utiliser une boucle
for
pour trouver la valeur maximale et minimale d’un vecteur en C++ -
Utilisez les fonctions
std::max_element
etstd::min_element
pour obtenir la valeur maximale et minimale d’un vecteur en C++ -
Utilisez la fonction
std::minmax_element
pour obtenir les valeurs maximales et minimales 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++.