Função c ++ std_max

Função c ++ std_max
A DST em C ++ significa padrão, referindo -se à biblioteca padrão e ao namespace padrão. A biblioteca padrão tem uma sub-biblioteca chamada, algoritmo. A biblioteca de algoritmo tem a função, max (), em formas sobrecarregadas. A função máxima retorna o máximo de dois valores do mesmo tipo, ou o valor máximo em uma lista (do mesmo tipo de valores).

Para usar a função max () da biblioteca do algoritmo C ++, o programa deve começar com algo com a biblioteca de algoritmo incluída como:

#incluir
#incluir
usando namespace std;

Existem quatro formas principais sobrecarregadas dessa função máxima e este artigo explica como usá -las.

modelo constExpr const t & max (const t & a, const t & b)

Esta função leva dois argumentos do mesmo tipo e retorna o maior de ambos. Se ambos são iguais em valor, a primeira ocorrência é retornada. O programa a seguir ilustra seu uso:

#incluir
#incluir
usando namespace std;
int main ()

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

A saída é E.

modelo
constExpr const t & max (const t & a, const t & b, compare comp)

Esta função sobrecarregada é semelhante ao acima, mas o programador definiu sua própria função de comparação. A função sobrecarregada acima usa a função de comparação padrão. A definição de uma função de comparação, que faz a mesma coisa que a função de comparação padrão é:

Bool Compfn (char a, char b)
se um < b)
retornar true;
outro
retorna falso;

São necessários dois valores, que podem ser de uma lista, então seus retornos verdadeiros, se o primeiro for menor que o segundo, então é falso. Nesta função, 'A' é o primeiro valor e B é o segundo valor. Na sintaxe da função max () do título desta seção, o primeiro argumento é 'a' e o segundo argumento é B, enquanto o terceiro argumento é o nome da função de comparação sem os parênteses e argumentos.

Observe que o tipo dos argumentos da função de comparação é o mesmo que o tipo de argumentos na função max ().

O programa a seguir com uma função definida por programador tem o mesmo efeito, do programa acima:

#incluir
#incluir
usando namespace std;
Bool Compfn (char a, char b)
se um < b)
retornar true;
outro
retorna falso;

int main ()

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

A saída é, e. Se 'c' fosse digitado antes de 'e' como argumentos na função max (), a saída ainda teria sido 'e'.

modelo constExpr t max (Initializer_list t)

Em C ++, um Initializer_list é a matriz literal. Este formulário sobrecarregado retorna o maior valor em um Initializer_list. O programa a seguir ilustra o seguinte:

#incluir
#incluir
usando namespace std;
int main ()

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

A saída é, e.

modelo
constExpr t max (Initializer_list t, compare comp)

Esta função sobrecarregada é semelhante ao código acima, mas precisa de uma função de comparação. A função de comparação acima pode ser usada como ilustrado no seguinte programa:

#incluir
#incluir
usando namespace std;
Bool Compfn (char a, char b)
se um < b)
retornar true;
outro
retorna falso;

int main ()

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

A saída é, e.

Função máxima personalizada

O programador pode escrever sua própria função max (). A estratégia é realmente fazer a comparação na função.

Máximo de dois valores

O programa a seguir mostra como determinar o valor máximo de dois valores:

#incluir
usando namespace std;
Char Max (Char A, Char B)
se (a> b)
retornar a;
outro
retornar b;

int main ()

char ch = max ('e', 'c');
cout<retornar a;
outro
retornar b;

int main ()

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

Máximo em uma lista

Um programa personalizado também pode ser escrito para encontrar o valor máximo em uma lista. A estratégia é a seguinte:

Presume -se que o primeiro elemento seja o elemento máximo na lista. Se o primeiro elemento for menor que o próximo elemento, o próximo elemento se tornará o novo máximo, caso contrário, o primeiro elemento permanece o máximo. Se o máximo assumido for menor que o elemento depois, o elemento depois se tornará o novo máximo, caso contrário, o antigo máximo permanece. Esta comparação continua até o final da lista. O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
Char Max (char arr [], int size)
char maxval = arr [0];
para (int i = 1; iif (maxvalmaxval = arr [i];

retornar maxval;

int main ()

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

A saída é, e. A primeira declaração na função max personalizada obtém o máximo assumido, no formulário:

char maxval = arr [0];

O próximo segmento de código é um loop para. Dentro do loop for, é um consumo de IF, que faz a comparação e a atribuição, à medida que a digitalização através da matriz continua.

Na função principal do C ++, a primeira declaração declara a matriz, cujo elemento máximo é necessário. A segunda declaração chama a função max personalizada. A declaração depois, imprime o valor máximo na lista.

Conclusão

Sem escrever uma função máxima personalizada. Para obter o valor máximo de dois valores, ou de mais de dois valores em uma lista, use uma função apropriada abaixo:

modelo constExpr const t & max (const t & a, const t & b)
modelo
constExpr const t & max (const t & a, const t & b, compare comp)
modelo constExpr t max (Initializer_list t)
modelo
constExpr t max (Initializer_list t, compare comp)

Essas funções sobrecarregadas estão todas na biblioteca de algoritmo.