Funkcja C ++ STD_MAX

Funkcja C ++ STD_MAX
STD w C ++ oznacza standard, odnosząc się do standardowej biblioteki i standardowej przestrzeni nazw. Standardowa biblioteka ma podwódkę o nazwie algorytm. Biblioteka algorytmu ma funkcję, max (), w formularzach przeciążonych. Funkcja maksymalna zwraca maksymalnie dwie wartości tego samego typu lub maksymalną wartość na liście (tego samego rodzaju wartości).

Aby użyć funkcji Max () biblioteki algorytmu C ++, program musi zacząć od czegoś z biblioteką algorytmu, jak:

#włączać
#włączać
za pomocą przestrzeni nazw Std;

Istnieją cztery główne przeciążone formy tej funkcji Max, a ten artykuł wyjaśnia, jak z nich korzystać.

szablon constexpr const t & max (const t & a, const t & b)

Ta funkcja przyjmuje dwa argumenty tego samego typu i zwraca większą z obu. Jeśli oba są takie same, pierwsze występowanie jest zwracane. Poniższy program ilustruje jego użycie:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

char ch = max („e”, „c”);
Cout<powrót 0;

Wyjście to e.

szablon
constexpr const t & max (const t & a, const t & b, compar comp)

Ta przeciążona funkcja jest podobna do powyższego, ale programista zdefiniował swoją własną funkcję porównawczą. Powyższa przeciążona funkcja używa domyślnej funkcji porównawczej. Definicja funkcji porównawczej, która robi to samo, co domyślna funkcja porównawcza, wynosi:

bool compfn (char a, char b)
Jeśli < b)
zwrócić true;
w przeciwnym razie
zwrócić fałsz;

Wymaga dwóch wartości, które mogą być z listy, a następnie jej zwraca, jeśli pierwszy jest mniejszy niż drugi, to jest fałszywe. W tej funkcji „A” jest pierwszą wartością, a B jest drugą wartością. W składni funkcji max () nagłówka tego rozdziału pierwszym argumentem jest „A”, a drugim argumentem jest B, podczas gdy trzeci argument to nazwa funkcji porównawczej bez nawiasów i argumentów.

Zauważ, że rodzaj argumentów funkcji porównawczej jest taki sam jak typ argumentów w funkcji max ().

Poniższy program z funkcją zdefiniowaną programistą ma taki sam efekt, jak powyższy program:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
bool compfn (char a, char b)
Jeśli < b)
zwrócić true;
w przeciwnym razie
zwrócić fałsz;

int main ()

char ch = max („e”, „c”, compfn);
Cout<powrót 0;

Wyjście to, e. Gdyby „c” wpisano przed „e” jako argumenty w funkcji max (), dane wyjściowe nadal byłyby „e”.

szablon constexpr t max (inicitizer_list T)

W C ++ lista inicjalizator jest literałem tablicy. Ten przeciążony formularz zwraca największą wartość w liście inicjalizatora. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

char ch = max („c”, „a”, „e”, „d”, „b”);
Cout<powrót 0;

Wyjście to, e.

szablon
constexpr t max (inicitizer_list t, porównaj komponent)

Ta przeciążona funkcja jest podobna do powyższego kodu, ale wymaga funkcji porównawczej. Powyższą funkcję porównania można zastosować, jak pokazano w następującym programie:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
bool compfn (char a, char b)
Jeśli < b)
zwrócić true;
w przeciwnym razie
zwrócić fałsz;

int main ()

char ch = max („c”, „a”, „e”, „d”, „b”, compfn);
Cout<powrót 0;

Wyjście to, e.

Niestandardowa funkcja maksymalna

Programista może napisać własną funkcję Max (). Strategia polega na dokonaniu porównania w funkcji.

Maksymalnie dwóch wartości

Poniższy program pokazuje, jak określić maksymalną wartość dwóch wartości:

#włączać
za pomocą przestrzeni nazw Std;
Char Max (char A, char b)
if (a> b)
zwrot a;
w przeciwnym razie
powrót B;

int main ()

char ch = max („e”, „c”);
Cout<zwrot a;
w przeciwnym razie
powrót B;

int main ()

char ch = max („c”, „e”);
Cout<powrót 0;

Maksimum na liście

Program niestandardowy można również napisać, aby znaleźć maksymalną wartość na liście. Strategia jest następująca:

Zakłada się, że pierwszy element jest maksymalnym elementem na liście. Jeśli pierwszy element jest mniejszy niż następny element, następny element staje się nowym maksimum, w przeciwnym razie pierwszy element pozostaje maksimum. Jeśli założone maksimum jest mniejsze niż element po, element po, staje się nowym maksimum, w przeciwnym razie, stare maksimum. To porównanie trwa do końca listy. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
char max (char arr [], int size)
char maxval = arr [0];
dla (int i = 1; iif (maxvalmaxval = arr [i];

return maxval;

int main ()

char ar [] = „c”, „a”, „e”, „d”, „b”;
char ch = max (AR, 5);
Cout<powrót 0;

Wyjście to, e. Pierwsza instrukcja w niestandardowej funkcji maksymalnej, uzyskuje przyjęty maks. W formie:

char maxval = arr [0];

Kolejnym segmentem kodu to pętla. Wewnątrz pętli jest konstrukt IF, który przeprowadza porównanie i przypisanie, ponieważ skanowanie przez tablicę trwa.

W głównej funkcji C ++ pierwsze stwierdzenie deklaruje tablicę, której maksymalny element jest wymagany. Druga instrukcja wywołuje niestandardową funkcję maksymalną. Instrukcja po wydrukuje maksymalną wartość na liście.

Wniosek

Bez pisania niestandardowej funkcji maksymalnej. Aby uzyskać maksymalną wartość dwóch wartości lub z więcej niż dwóch wartości na liście, użyj odpowiedniej funkcji poniżej:

szablon constexpr const t & max (const t & a, const t & b)
szablon
constexpr const t & max (const t & a, const t & b, compar comp)
szablon constexpr t max (inicitizer_list T)
szablon
constexpr t max (inicitizer_list t, porównaj komponent)

Te przeciążone funkcje są w bibliotece algorytmu.