El c ++ biblioteca de plantillas

La biblioteca estándar de C ++ proporciona un conjunto completo de matemáticas, hora de entrada / salida, y las operaciones de DOS, por nombrar sólo algunos. Muchos de los primeros programas que se aprende como un principiante utilice los llamados funciones de cadenas de caracteres definidas en el archivo de inclusión cuerdas.

Los tipos de argumentos para muchas de estas funciones son fijos. Por ejemplo, ambos argumentos para strcpy (char *, char *) debe ser un puntero a una cadena de caracteres terminada en cero - nada tiene sentido.

Hay funciones que son aplicables a múltiples tipos. Considere el ejemplo de los humildes máxima () función, que devuelve el máximo de dos argumentos. Todas las siguientes variaciones tiene sentido:

int máximo (int n1, n2 int) - // retorno máximo de máximo dos integersunsigned (u1 sin firmar, u2 sin firmar) máxima -doble (doble d1, d2 doble) máxima -char (c1 char, c2 char) -

Aquí, le gustaría implementar máxima () para todos los cuatro casos.

Por supuesto, usted podría sobrecargar máxima () con todas las versiones posibles:

doble máximo (doble d1, d2 doble) {return (d1> d2)? d1: D2} int máximo (int n1, n2 int) {return (n1> n2)? n1: N2} máxima char (c1 char, c2 char) {return (c1> c2)? c1: c2 -} // ... repetir para todos los demás tipos numéricos ...

Este enfoque funciona. Ahora C ++ selecciona el mejor partido, máximo (int, int), para una referencia como máxima (1, 2). Sin embargo, la creación de la misma función para cada tipo de variable es una pérdida de tiempo bruto.

El código fuente de todo el máxima (T, T) funciones sigue el mismo patrón, donde T es uno de los tipos numéricos. Sería muy conveniente si se podría escribir la función de una vez y dejar que C ++ suministrar el tipo T según sea necesario cuando se utiliza la función. De hecho, C ++ te permite hacer exactamente esto. Se les llama definiciones de plantilla.




» » » » El c ++ biblioteca de plantillas