Función C ++ STD_MAX

Función C ++ STD_MAX
La ETS en C ++ significa estándar, refiriéndose a la biblioteca estándar y al espacio de nombres estándar. La biblioteca estándar tiene un sub-bibliotecario llamado algoritmo. La biblioteca de algoritmo tiene la función, max (), en formularios sobrecargados. La función máxima devuelve el máximo de dos valores del mismo tipo, o el valor máximo en una lista (del mismo tipo de valores).

Para usar la función max () de la biblioteca de algoritmo C ++, el programa debe comenzar con algo con la biblioteca de algoritmo incluida como:

#incluir
#incluir
usando el espacio de nombres STD;

Hay cuatro formas principales sobrecargadas de esta función máxima y este artículo explica cómo usarlas.

plantilla Constexpr const t & max (const t&A, const t & b)

Esta función toma dos argumentos del mismo tipo y devuelve el más grande de ambos. Si ambos son iguales en valor, se devuelve el primer hecho. El siguiente programa ilustra su uso:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

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

La salida es E.

plantilla
constexpr const t & max (const t&A, const t & b, compare comp)

Esta función sobrecargada es similar a la anterior, pero el programador ha definido su propia función de comparación. La función sobrecargada anterior utiliza la función de comparación predeterminada. La definición de una función de comparación, que hace lo mismo que la función de comparación predeterminada es:

bool compfn (char a, char b)
Si (a < b)
devolver verdadero;
demás
falso retorno;

Se necesitan dos valores, que pueden ser de una lista, entonces se devuelve verdadero, si el primero es menor que el segundo, entonces es falso. En esta función, 'A' es el primer valor y B es el segundo valor. En la sintaxis de la función max () del encabezado de esta sección, el primer argumento es 'A' y el segundo argumento es B, mientras que el tercer argumento es el nombre de la función de comparación sin los paréntesis y argumentos.

Tenga en cuenta que el tipo de argumentos de la función de comparación es el mismo que el tipo de argumentos en la función max ().

El siguiente programa con una función definida del programador tiene el mismo efecto, que el programa anterior:

#incluir
#incluir
usando el espacio de nombres STD;
bool compfn (char a, char b)
Si (a < b)
devolver verdadero;
demás
falso retorno;

int main ()

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

La salida es, e. Si 'C' se escribiera antes de 'E' como argumentos en la función max (), la salida aún habría sido 'e'.

plantilla Constexpr t max (inicializer_list t)

En C ++, un inicializador_list es la matriz literal. Este formulario sobrecargado devuelve el mayor valor en un inicializador_list. El siguiente programa ilustra esto:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

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

La salida es, e.

plantilla
Constexpr t max (inicializer_list t, comparar comp)

Esta función sobrecargada es similar al código anterior, pero necesita una función de comparación. La función de comparación anterior se puede usar como se ilustra en el siguiente programa:

#incluir
#incluir
usando el espacio de nombres STD;
bool compfn (char a, char b)
Si (a < b)
devolver verdadero;
demás
falso retorno;

int main ()

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

La salida es, e.

Función máxima personalizada

El programador puede escribir su propia función max (). La estrategia es hacer la comparación en la función.

Máximo de dos valores

El siguiente programa muestra cómo determinar el valor máximo de dos valores:

#incluir
usando el espacio de nombres STD;
char max (char a, char b)
if (a> b)
regresar a;
demás
regreso B;

int main ()

char ch = max ('e', 'c');
cout<regresar a;
demás
regreso B;

int main ()

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

Máximo en una lista

También se puede escribir un programa personalizado para encontrar el valor máximo en una lista. La estrategia es la siguiente:

Se supone que el primer elemento es el elemento máximo en la lista. Si el primer elemento es menor que el siguiente elemento, entonces el siguiente elemento se convierte en el nuevo máximo, de lo contrario, el primer elemento sigue siendo el máximo. Si el máximo asumido es menor que el elemento después, el elemento después, se convierte en el nuevo máximo, de lo contrario, el viejo máximo permanece. Esta comparación continúa hasta el final de la lista. El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
char max (char arr [], int size)
char maxval = arr [0];
para (int i = 1; iif (maxvalmaxval = arr [i];

devolver maxval;

int main ()

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

La salida es, e. La primera declaración en la función máxima personalizada obtiene el max asumido, en el formulario:

char maxval = arr [0];

El siguiente segmento de código es un for-bucle. Dentro del bucle, es una construcción if, que hace la comparación y la asignación, a medida que el escaneo a través de la matriz continúa.

En la función principal de C ++, la primera declaración declara la matriz, cuyo elemento máximo se requiere. La segunda declaración llama a la función máxima personalizada. La declaración posterior, imprime el valor máximo en la lista.

Conclusión

Sin escribir una función máxima personalizada. Para obtener el valor máximo de dos valores, o de más de dos valores en una lista, use una función apropiada a continuación:

plantilla Constexpr const t & max (const t&A, const t & b)
plantilla
constexpr const t & max (const t&A, const t & b, compare comp)
plantilla Constexpr t max (inicializer_list t)
plantilla
Constexpr t max (inicializer_list t, comparar comp)

Estas funciones sobrecargadas están todas en la biblioteca de algoritmo.