Fonction C ++ STD_MAX

Fonction C ++ STD_MAX
Le std en C ++ signifie la norme, se référant à la bibliothèque standard et à l'espace de noms standard. La bibliothèque standard a une sous-bibliothèque appelée algorithme. La bibliothèque d'algorithmes a la fonction, max (), sous forme de formulaires surchargés. La fonction maximale renvoie le maximum de deux valeurs du même type, ou la valeur maximale dans une liste (du même type de valeurs).

Afin d'utiliser la fonction max () de la bibliothèque d'algorithmes C ++, le programme doit commencer par quelque chose avec la bibliothèque d'algorithme incluse comme:

#inclure
#inclure
Utilisation de Namespace Std;

Il existe quatre principales formes surchargées de cette fonction maximale et cet article explique comment les utiliser.

modèle constexpr const t & max (const t & a, const t & b)

Cette fonction prend deux arguments du même type et renvoie le plus grand des deux. Si les deux sont les mêmes en valeur, la première occurrence est retournée. Le programme suivant illustre son utilisation:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

char ch = max ('e', 'c');
couter<retour 0;

La sortie est e.

modèle
constexpr const t & max (const t & a, const t & b, compare comp)

Cette fonction surchargée est similaire à ce qui précède, mais le programmeur a défini sa propre fonction de comparaison. La fonction surchargée ci-dessus utilise la fonction de comparaison par défaut. La définition d'une fonction de comparaison, qui fait la même chose que la fonction de comparaison par défaut est:

bool compfn (char a, char b)
si un < b)
Retour Vrai;
autre
retourne false;

Il prend deux valeurs, qui peuvent être d'une liste, alors son retour vrai, si le premier est inférieur au second, alors il est faux. Dans cette fonction, «A» est la première valeur et b est la deuxième valeur. Dans la syntaxe de fonction max () de l'en-tête de cette section, le premier argument est «A» et le deuxième argument est B, tandis que le troisième argument est le nom de la fonction de comparaison sans les parenthèses et les arguments.

Notez que le type des arguments de la fonction de comparaison est le même que le type des arguments dans la fonction max ().

Le programme suivant avec une fonction définie par le programmeur a le même effet, que le programme ci-dessus:

#inclure
#inclure
Utilisation de Namespace Std;
bool compfn (char a, char b)
si un < b)
Retour Vrai;
autre
retourne false;

int main()

char ch = max ('e', 'c', compfn);
couter<retour 0;

La sortie est, E. Si «c» était tapé avant «e» comme arguments dans la fonction max (), la sortie aurait toujours été «e».

modèle constexpr t max (initializer_list t)

En C ++, un initialiseur_list est le littéral du tableau. Ce formulaire surchargé renvoie la plus grande valeur dans un initialiseur_list. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

char ch = max ('c', 'a', 'e', ​​'d', 'b');
couter<retour 0;

La sortie est, E.

modèle
constexpr t max (initializer_list t, comparer comp)

Cette fonction surchargée est similaire au code ci-dessus mais il a besoin d'une fonction de comparaison. La fonction de comparaison ci-dessus peut être utilisée comme illustré dans le programme suivant:

#inclure
#inclure
Utilisation de Namespace Std;
bool compfn (char a, char b)
si un < b)
Retour Vrai;
autre
retourne false;

int main()

char ch = max ('c', 'a', 'e', ​​'d', 'b', compfn);
couter<retour 0;

La sortie est, E.

Fonction maximale personnalisée

Le programmeur peut écrire sa propre fonction max (). La stratégie consiste à faire la comparaison dans la fonction.

Max de deux valeurs

Le programme suivant montre comment déterminer la valeur maximale de deux valeurs:

#inclure
Utilisation de Namespace Std;
char Max (char a, char b)
si (a> b)
retourner a;
autre
retour b;

int main()

char ch = max ('e', 'c');
couter<retourner a;
autre
retour b;

int main()

char ch = max ('c', 'e');
couter<retour 0;

Maximum dans une liste

Un programme personnalisé peut également être écrit pour trouver la valeur maximale dans une liste. La stratégie est la suivante:

Le premier élément est supposé être l'élément maximum de la liste. Si le premier élément est inférieur à l'élément suivant, alors l'élément suivant devient le nouveau maximum, sinon le premier élément reste le maximum. Si le maximum supposé est inférieur à l'élément après, l'élément après, devient le nouveau maximum, sinon, l'ancien maximum reste. Cette comparaison se poursuit jusqu'à la fin de la liste. Le programme suivant illustre ceci:

#inclure
Utilisation de Namespace Std;
char Max (char arr [], int taille)
char maxval = arr [0];
pour (int i = 1; iif (maxvalmaxval = arr [i];

retour maxval;

int main()

char ar [] = 'c', 'a', 'e', ​​'d', 'b';
char ch = max (ar, 5);
couter<retour 0;

La sortie est, E. La première instruction de la fonction MAX personnalisée obtient le maximum supposé, sous la forme:

char maxval = arr [0];

Le segment de code suivant est une boucle pour. À l'intérieur de la boucle, se trouve un si-construction, qui fait la comparaison et l'attribution, alors que le balayage à travers le tableau se poursuit.

Dans la fonction principale C ++, la première instruction déclare le tableau, dont l'élément maximum est requis. La deuxième instruction appelle la fonction max personnalisée. La déclaration après, imprime la valeur maximale de la liste.

Conclusion

Sans écrire une fonction maximale personnalisée. Afin d'obtenir la valeur maximale de deux valeurs, ou à partir de plus de deux valeurs dans une liste, utilisez une fonction appropriée ci-dessous:

modèle constexpr const t & max (const t & a, const t & b)
modèle
constexpr const t & max (const t & a, const t & b, compare comp)
modèle constexpr t max (initializer_list t)
modèle
constexpr t max (initializer_list t, comparer comp)

Ces fonctions surchargées sont toutes dans la bibliothèque d'algorithmes.