Funzione c ++ std_max

Funzione c ++ std_max
L'STD in C ++ significa standard, riferendosi alla libreria standard e allo spazio dei nomi standard. La libreria standard ha un sub-biblioteca chiamato, algoritmo. La libreria dell'algoritmo ha la funzione, max (), in forme sovraccarichi. La funzione Max restituisce il massimo di due valori dello stesso tipo o il valore massimo in un elenco (dello stesso tipo di valori).

Per utilizzare la funzione max () della libreria di algoritmo C ++, il programma deve iniziare con qualcosa con la libreria dell'algoritmo inclusa come:

#includere
#includere
Utilizzo dello spazio dei nomi std;

Esistono quattro principali forme sovraccarichi di questa funzione massima e questo articolo spiega come usarle.

modello COSTEXPR const T & max (const T&A, const T&B)

Questa funzione prende due argomenti dello stesso tipo e restituisce il più grande di entrambi. Se entrambi hanno lo stesso valore, il primo occorrenza viene restituito. Il seguente programma ne illustra l'uso:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

char ch = max ('e', 'c');
cout<restituzione 0;

L'output è E.

modello
CONSTEXPR const T & max (const T&A, const T&B, confronta comp)

Questa funzione sovraccarica è simile a quella sopra, ma il programmatore ha definito la sua funzione di confronto. La funzione sovraccaricata sopra utilizza la funzione di confronto predefinita. La definizione di una funzione di confronto, che fa la stessa cosa della funzione di confronto predefinita è:

bool compfn (char a, char b)
se un < b)
restituire vero;
altro
restituire false;

Ci vogliono due valori, che possono essere di un elenco, quindi è vero vero, se il primo è inferiore al secondo, allora è falso. In questa funzione, "A" è il primo valore e B è il secondo valore. Nella sintassi della funzione Max () dell'intestazione di questa sezione, il primo argomento è "A" e il secondo argomento è B, mentre il terzo argomento è il nome della funzione di confronto senza parentesi e argomenti.

Si noti che il tipo di argomenti della funzione di confronto è lo stesso del tipo di argomenti nella funzione max ().

Il seguente programma con una funzione di programmatore definita, ha lo stesso effetto, del programma sopra:

#includere
#includere
Utilizzo dello spazio dei nomi std;
bool compfn (char a, char b)
se un < b)
restituire vero;
altro
restituire false;

int main ()

char ch = max ('e', 'c', compfn);
cout<restituzione 0;

L'output è, E. Se "c" fosse digitato prima di "e" come argomenti nella funzione max (), l'output sarebbe stato comunque "e".

modello costexpr t max (inizializer_list T)

In C ++, un Initializer_List è il letterale dell'array. Questo modulo sovraccarico restituisce il valore più grande in un inizializer_list. Il seguente programma illustra questo:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

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

L'output è, E.

modello
costexpr t max (inizializer_list T, confronta comp)

Questa funzione sovraccarica è simile al codice sopra ma necessita di una funzione di confronto. La funzione di confronto sopra può essere utilizzata come illustrata nel seguente programma:

#includere
#includere
Utilizzo dello spazio dei nomi std;
bool compfn (char a, char b)
se un < b)
restituire vero;
altro
restituire false;

int main ()

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

L'output è, E.

Funzione massima personalizzata

Il programmatore può scrivere la sua funzione max (). La strategia è effettivamente fare il confronto nella funzione.

Max di due valori

Il seguente programma mostra come determinare il valore massimo di due valori:

#includere
Utilizzo dello spazio dei nomi std;
char max (char a, char b)
if (a> b)
restituire a;
altro
ritorno b;

int main ()

char ch = max ('e', 'c');
cout<restituire a;
altro
ritorno b;

int main ()

char ch = max ('c', 'e');
cout<restituzione 0;

Massimo in un elenco

Un programma personalizzato può anche essere scritto per trovare il valore massimo in un elenco. La strategia è la seguente:

Si presume che il primo elemento sia l'elemento massimo nell'elenco. Se il primo elemento è inferiore all'elemento successivo, allora l'elemento successivo diventa il nuovo massimo, altrimenti il ​​primo elemento rimane il massimo. Se il massimo assunto è inferiore all'elemento dopo, l'elemento dopo, diventa il nuovo massimo, altrimenti, il vecchio massimo rimane. Questo confronto continua fino alla fine dell'elenco. Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
char max (char arr [], int size)
char maxval = arr [0];
per (int i = 1; iif (Maxvalmaxval = arr [i];

restituire Maxval;

int main ()

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

L'output è, E. La prima istruzione nella funzione max personalizzata, ottiene il massimo presunto, nel modulo:

char maxval = arr [0];

Il segmento di codice successivo è un per loop. All'interno del circuito per loop, è un costrutto if, che esegue il confronto e l'assegnazione, mentre la scansione attraverso l'array continua.

Nella funzione principale C ++, la prima istruzione dichiara l'array, il cui elemento massimo è richiesto. La seconda istruzione chiama la funzione max personalizzata. L'istruzione dopo, stampa il valore massimo nell'elenco.

Conclusione

Senza scrivere una funzione massima personalizzata. Al fine di ottenere il valore massimo di due valori o da più di due valori in un elenco, utilizzare una funzione appropriata di seguito:

modello COSTEXPR const T & max (const T&A, const T&B)
modello
CONSTEXPR const T & max (const T&A, const T&B, confronta comp)
modello costexpr t max (inizializer_list T)
modello
costexpr t max (inizializer_list T, confronta comp)

Queste funzioni sovraccarichi sono tutte nella libreria dell'algoritmo.