Librer�a+Estándar

﻿LIBRERÍA ESTÁNDAR C++ Sinopsis C++ no llega al nivel de simplicidad de su antecesor C, pero al igual que aquél, tampoco dispone de utilidades o funciones para entrada o salida implementadas en el propio lenguaje, de modo que estas y otras muchas, como manejo de cadenas de caracteres (strings), manejo de ficheros, funciones matemáticas Etc. son implementadas en forma de **librerías externas **. Una **librería ** es un conjunto de recursos (algoritmos) prefabricados, que pueden ser utilizados por el programador para realizar determinadas operaciones.Las declaraciones de las funciones utilizadas en estas librerías, junto con algunas macros y constantes predefinidas que facilitan su utilización, se agrupan en ficheros de nombres conocidos que suelen encontrarse en sitios predefinidos. Por ejemplo, en los sistemas UNIX, en /usr/include. Estos ficheros se suelen llamar "**de cabecera **", porque es tradición utilizar las primeras líneas del programa para poner las directivas **#include ** que los incluirá en el fuente durante la fase de preprocesado.


CLASE DE LIBRERÍAS Los compiladores C++ incluyen un amplio repertorio de clases, funciones y macros que permiten realizar una amplia variedad de tareas, incluyendo entradas/salidas de bajo y alto nivel; manipulación de cadenas alfanuméricas y ficheros; control de procesos (incluyendo multiproceso); manejo de memoria; cálculos matemáticos y un largo etcétera. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Este repertorio de recursos es denominado colectivamente como "Rutinas de librería"; "Librerías de ejecución" **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">RTL ** ("Runtime Librarys") o simplemente "Librerías". Puede decirse que el lenguaje aislado (tal cual) no tiene prácticamente ninguna utilidad sin la concurrencia de estas utilidades. El Estándar C++ las clasifica según su utilidad: > > > > > > > > > > <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Librería Estándar C++ <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Para poner un poco de orden, el Estándar C++ define la denominada **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Librería Estándar ** [__<span style="background-color: transparent; color: #0066cc; font-family: Times New Roman; font-size: 16px; text-align: left; vertical-align: baseline;">3 __] que debe acompañar a cada implementación del compilador que se adhiera al estándar. Es decir: la norma determina cuales son, como se llaman y como se utiliza este conjunto de algoritmos que deben acompañar (como mínimo) a cada implementación del compilador que quiera llamarse "Estándar". La última versión, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">ISO/IEC 14882 ** del año 1998, especifica que se compone de 32 ficheros de cabecera de nombres fijos y conocidos agrupados según la funcionalidad de los algoritmos. Son los siguientes: <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Es digno de mención que aunque generalmente las librerías no aportan ninguna característica al lenguaje (se supone que son utilidades auxiliares que no forman parte del lenguaje propiamente dicho), una pequeña porción de la Librería Estándar C++ sí aporta características que se consideran pertenecientes a este, de forma que deben estar presentes los ficheros de cabecera correspondientes si se desea usarlas. En concreto se refieren a los siguientes elementos: > > > > <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Librería <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Además de otras nuevas, cuyo diseño e importancia cambian drásticamente la filosofía del lenguaje, C++ incluye prácticamente la totalidad de funciones de la primitiva librería estándar **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">C **. A esta librería, mantenida por compatibilidad, la denominamos **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Librería clásica **. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">COMPONENTES <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"> <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Al referirnos a las librerías C++ utilizamos la terminología siguiente: > > > > <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">La calidad de un compilador C++ viene determinada en gran medida por la calidad y cantidad de su **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">RTL **; por su grado de adherencia al Estándar y por el grado de soporte que proporciona para la plataforma concreta a que se destina. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"> <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span class="goog_qs-tidbit goog_qs-tidbit-0" style="background-color: transparent; color: #000000; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Nota **<span class="goog_qs-tidbit goog_qs-tidbit-0" style="background-color: transparent; color: #000000; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">: en lo que concierne a la programación para MS Windows (las referencias a la plataforma Wintel surgen de forma constante e inevitable), los compiladores Borland C++ y MS Visual C++ son quizás los más conocidos y utilizados. El primero incluye una completa librería denominada **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">VCL ** (Visual Component Library. La del segundo es conocida como **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">MFC **(Microsoft Foundation Classes. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Linux dispone de su propio compilador: **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">GNU Cpp **, que comenzó siendo un compilador C y ha evolucionado a un producto que es en realidad un superconjunto de compiladores. No solo puede compilar código C y C++; también otros lenguajes como Ada o Fortran; de forma que es común referirse a ellos como GCC ("GNU Compiler Collection"). La buena noticia es que existen versiones de este compilador para plataformas Windows, de forma que incluso en este ambiente "Propietario" pueden realizarse desarrollos utilizando herramientas "Open source". <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">A grandes rasgos la librería Estándar C++ comprende los siguientes módulos: >> >> > > > > > > >
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Soporte del lenguaje
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Diagnóstico
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Utilidades generales
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Cadenas alfanuméricas ("Strings")
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Localización
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Contenedores
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Iteradores
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Algoritmos
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Cálculo numérico
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Entrada/Salida
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Ficheros ** ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Funcionalidad/funciones **  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">algorithm **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL que describe los algoritmos  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">bitset **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">bitset ** . Set de valores booleanos.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">complex **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la librería numérica de la STL relativa a los complejos.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">deque **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">deque **; un tipo de colas: "Double-ended-queue".  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">exception **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la librería de diagnóstico relativa al manejo de excepciones  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">fstream **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Flujos hacia/desde ficheros.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">functional **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a Objetos-función  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">iomanip **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Manipuladores.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">ios **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Supreclases para manejo de flujos de E/S.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">iosfwd **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">iostream **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte del a STL que contiene los algoritmos estándar de E/S.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">istream **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Algoritmos estándar de flujos de entrada.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">iterator **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relacionada con iteradores, un tipo de puntero que permite utilizar los algoritmos de la Librería con las estructuras de datos representadas por los contenedores.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">limits **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Descripción de propiedades dependientes de la implementación que afectan a los tipos fundamentales.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">list **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">list **; listas doblemente enlazadas.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">locale **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a la internacionalización.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">map **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">map. **  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">memory **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">new **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Manejo de memoria dinámica  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><<span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">numeric **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la librería numérica de la STL relativa a operaciones numéricas  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">ostream **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Algoritmos estándar para los flujos de salida.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">queue **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">queue **; colas de objetos.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">set **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">set **.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">sstream **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Flujos hacia/desde cadenas alfanuméricas.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">stack **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">stack **; pilas de objetos.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">stdexcept **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a las clases de las que derivan los objetos lanzados por las excepciones ocasionadas en los algoritmos de la propia STL y otras expresiones. Estas clases son utilizadas para reportar errores detectados durante runtime. Los usuarios también pueden utilizar excepciones para reportar errores en sus propios programas.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">streambuf **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa al Almacenamiento de flujos de E/S ("Stream buffers"). Define los tipos que controlan la capa de transporte.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">string **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">string **; una generalización de las cadenas alfanuméricas para albergar cadenas de objetos.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">typeinfo **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Mecanismo de identificación de tipos en tiempo de ejecución.  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">utility **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL que contiene elementos auxiliares como operadores y pares (pairs).  ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">valarray **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la librería numérica de la STL relativa a manejo de matrices numéricas   ||
 * < <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"><**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">vector **> ||< <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Parte de la STL relativa a los contenedores tipo **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">vector **; una generalización de las matrices unidimensionales C/C++.  ||
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Operadores **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">new **, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">new **[], **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">delete ** y **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">delete **[].
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Clase type_info que corresponde al mecanismo RTTI de identificación de tipos en tiempo de ejecución representado por el operador **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">typeid **.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Rutinas de inicio y terminación.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Las excepciones estándar lanzadas por los algoritmos anteriores.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">RTL ** Conjunto de librerías que acompañan a un compilador ("Runtime Library"), sean o no estándar.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Librería Estándar **. Conjunto de librerías cuyo contenido está definido por el Estándar C++ (abreviadamente **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">LE **)
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Libería clásica **. Parte de la Librería Estándar correspondiente al C clásico.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">STL ** ("Standard Templete Library"). Parte de la **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">LE ** genuina de C++ (que no es heredada de C) y que responde a la forma "++" de hacer las cosas.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">La denominada Librería Estándar de Plantillas, abreviadamente **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">STL ** ("Standard Templete Library").
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Librería numérica. Parte de la STL que contiene algoritmos especialmente concebidos para computación numérica. Por ejemplo, una clase **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">valarray ** optimizada para matrices numéricas y una clase **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">complex ** para manejo y representación estandarizada de números complejos (en realidad una plantilla con especializaciones para los tipos **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">float **, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">double ** y **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">long double **).
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Utilidades. Parte de la STL dedicada a elementos auxiliares tales como adaptadores y la clase **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">auto_ptr **.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Unas utilidades de entrada/salida de flujos, denominadas genéricamente **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">iostreams **.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Una utilidad **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">locale ** para manejo de localismos.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Una clase **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">string ** para manejo estandarizado de cadenas de caracteres. En realidad es una instanciación (especialización) de la plantilla **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">basic_string ** para cadenas de caracteres.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Un esquema para describir de modo uniforme el entorno de ejecución mediante la utilización de una clase estándar denominada **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">numeric_limits ** y especialización para cada uno de los tipos de datos fundamentales.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Utilidades para manejo de memoria.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Soporte para utilización de juegos de caracteres y signos de diversos idiomas.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Utilidades de diagnóstico y manejo de errores. Incluyen manejo de excepciones y la macro **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">assert **.

<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 13.26px; text-align: left; text-decoration: none; vertical-align: baseline;">
<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">FUNCIONALIDAD <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Si atendemos a su funcionalidad, las utilidades ofrecidas por la Librería Estándar pueden agruparse en: > > > > > > > > > > > > > >
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Clasificación **: Clasifican caracteres ASCII, como letras, caracteres de control (no imprimibles), Mayúsculas/minúsculas etc. Se definen en la cabecera <**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">ctype.h **>.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Entradas/Salidas de Consola **: Estas son las denominadas entrada/salida estándar. Por defecto se refieren al teclado y a la pantalla (no pueden utilizarse directamente en aplicaciones de interfaz gráfica).
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Conversión **: Convierten caracteres y cadenas de caracteres desde formato alfabético a numérico de diversos tipos (**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">float **, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">int **, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">long **). También realizan la conversión inversa: de formatos numéricos a representaciones alfabéticas y de mayúsculas a minúsculas y viceversa.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Diagnóstico **: Son rutinas destinadas a comprobaciones; a descubrir y corregir posibles errores.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Directorio **: Rutinas para manejo de directorios y sus direcciones (path names).
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">En linea (Inline) **: Rutinas para versiones **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">inline ** de funciones. El compilador genera el código correspondiente para las versiones inline cuando se utiliza **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"> #pragma intrinsic ** o si se solicita optimización al compilador (optimización de tiempo de ejecución).
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Entrada/Salida **. Son rutinas que proporcionan manejo de flujos y operaciones de Entrada/Salida a bajo nivel (de Sistema Operativo).
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Manipulación **. Manejo de cadenas y bloques de memoria: copiar, comparar, convertir y buscar.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Matemáticas **: Para realizar cálculos matemáticos.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">De Memoria **: Proporcionan asignación de memoria dinámica.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Miscelánea **. Se agrupan aquí rutinas varias, como las que posibilitan saltos (goto) no locales y las que manejan diferencias de tipo cultural o de lenguaje. Por ejemplo representación de números, de moneda, formatos de fecha y hora, clasificación de tipo alfabético, etc.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Control de proceso **. Rutinas que permiten invocar y terminar nuevos procesos desde otra rutina.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Fecha y hora **. Incluyen rutinas para conversión y manipulación de variables de medida del tiempo (fecha y hora).
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Argumentos variables **. Rutinas utilizadas cuando se usan listas variables de argumentos, como en los casos de **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">printf **, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">vscanf **, etc.

<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 13.26px; text-align: left; text-decoration: none; vertical-align: baseline;">
<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">UTILIZACIÓN <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">La utilización de la Librería Estándar C++ requiere de dos tipos de condiciones que podríamos describir como formales y conceptuales. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">En <span style="font-family: 'Comic Sans MS',cursive;">cuanto a las primeras (condiciones formales) y habida cuenta que las utilidades aparecen en forma de funciones, resulta evidente que su utilización exige incluirlas en nuestro programa. Para ello se necesitan tres pasos (en realidad las exigencias son las mismas que con cualquier otra función, la diferencia estriba en la forma en que se realizan los pasos **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">b ** y **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">c **): <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">** A) **Incluir en el código fuente las **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">invocaciones ** a las funciones que estamos utilizando. Ejemplo: <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">printf("Esto es una llamada a la función \"printf\" de librería\n");  <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">B)Incluir en el código fuente los **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">prototipos ** de dichas funciones. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Puesto que los prototipos ya están incluidos en los ficheros estándar de cabecera, hay que indicar al compilador que los incluya. Esto se realiza poniendo en nuestro fuente (normalmente al principio) una directiva de preprocesado **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">#include ** que señala el fichero de cabecera que se debe añadir. Por ejemplo, si el manual indica que la función **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">printf ** está definida en el fichero de cabecera **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">stdio.h ** ponemos en nuestro código: <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">#include <stdio.h> <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;"> <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">** C) **Incluir en el fuente las **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">definiciones ** de las funciones utilizadas. Como alternativa se puede indicar al compilador que tales definiciones están en ficheros compilados previamente. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">En este último caso se dice que las definiciones de las funciones están en **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">librerías ** de las que existen dos tipos:**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">estáticas ** (.LIB, .OBJ y .BPI) y **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">dinámicas ** (.DLL). Toda la información que necesita el compilador está contenida en los ficheros de cabecera, por lo que las operaciones correspondientes son realizadas de forma automática; con la sola condición de que los ficheros y librerías correspondientes sean accesibles al enlazador. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">No olvidar que la entidades de la **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Librería Estándar ** C++ (que no están en ficheros de cabecera **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">.h **), se han definido en un espacio de nombres denominado **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">std **, por lo que es preciso referirse a él específicamente cuando se quieran utilizar estos recursos. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">1) Respecto a las que hemos denominado "condiciones conceptuales", damos por sentado que la utilización de algoritmos de la Librería exige conocerlos. Pero debemos advertir que existe una gran diferencia entre las rutinas de la que hemos denominado **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">librería clásica ** y los recursos de la nueva Librería Estándar de Plantillas **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">STL **. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">2) En general los algoritmos contenidos en la librería clásica realizan tareas muy sencillas bajo la forma de funciones que, con un cierto número de argumentos, realizan la tarea encomendada. A veces devolviendo un objeto (que puede ser una estructura). Su utilización exige poco más que repasar esta colección de funciones (209 en la última versión del Estándar) hasta encontrar la que mejor se ajusta a nuestras necesidades. Para esto lo mejor es recurrir a la clasificación temática ofrecida en la documentación que acompaña a los compiladores antes que a la lista alfabética de las mismas. A continuación estudiamos atentamente su prototipo y la explicación de funcionamiento que acompaña el manual (eventualmente incluso con un ejemplo) y ya estamos listos para utilizarla. En el peor de los casos suelen bastar un par de pruebas hasta que conseguimos ajustar los argumentos de forma que se consiga el resultado esperado. <span style="font-family: 'Comic Sans MS',cursive;"> <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">** Nota **: A título de ejemplo, el fichero BCB5RTL.HLP, que contiene la "C Runtime Library reference" (nombre con que aparece la Librería Clásica en la documentación de Borland), contiene dos secciones; la primera, denominada "Categorical Routines and Types Listing", contiene la clasificación temática; la segunda, denominada "Alphabetical Routines and Types Listing", contiene la relación alfabética. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Como última recomendación al respecto, sobre todo si pensamos que nuestro programa tendrá una larga vida y/o pensamos portarlo a otras plataformas, aconsejaría echar un vistazo a la sección de "compatibilidad" que acompaña a la descripción de cada función en la documentación de la mayoría de compiladores. Suele ocurrir que el compilador ofrezca muchas más funciones que las estrictamente Estándar C++, y que estas no estén claramente separadas del resto, de forma que es posible que elijamos una función que resuelve nuestro problema pero no es portable, en cuyo caso aconsejaría evitarlas dentro de lo posible. <span style="font-family: 'Comic Sans MS',cursive;"> <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">Nota **: como ejemplo escogido al azar, la función **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">max **, que aparece en primer lugar en la clasificación temática de la documentación Borland C (Runtime Library reference: "Categorical Routines and Types Listing"), es una función ofrecida por este compilador para el entorno Windows-32 pero no es portable a UNIX ni tampoco pertenece a los estándares C o C++. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Para todo el que no se haya asomado antes a la programación genérica, la utilización de la nueva Librería de Plantillas (STL) exige la asimilación de un nuevo paradigma; una nueva forma de pensar que, si se tiene experiencia en programación tradicional, exige incluso un "cambio de chip", ya que estas herramientas conforman un mundo enteramente nuevo y singular. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Con independencia de las explicaciones más detalladas que incluimos en el siguiente capítulo, adelantemos aquí que la STL ofrece un conjunto de recursos flexible, potente y altamente optimizado para resolver una gran variedad de situaciones de programación. Pero esta versatilidad y potencia tributan un precio: su alto grado de parametrización supone algo más que utilizar herramientas aisladas. Es necesario saber ensamblar entre sí los recursos disponibles, que no trabajan aisladamente y que son básicamente de tres tipos: **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">contenedores **, **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">iteradores ** y **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">algoritmos **. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">El resultado es que el proceso de utilizar la STL es algo más complicado que la simple búsqueda de una función que resuelva nuestras necesidades; que la curva de aprendizaje es ciertamente más ardua que en el caso de la librería clásica, y que los conceptos involucrados son más abstractos y requieren un conocimiento más extenso de sus fundamentos para utilizarlos. Desde luego, la descripción detallada de todos sus elementos exige un libro completo, y de hecho son muchos los que se han publicado con el objeto exclusivo de describir la STL y/o sus técnicas de uso. En compensación, las contrapartidas obtenidas justifican sin duda el esfuerzo. El programador puede concentrarse más en el problema que en los detalles de su implementación en el fuente, se incremente la productividad y se gana en claridad conceptual. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">FUNCIONES Y MACROS. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Hay que señalar que algunas funciones pueden venir implementadas de dos formas: como <span class="esclarecido" style="background-color: transparent; color: #000000; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">macro ** y como **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">función **. Por ejemplo, la función **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">isalnum **, contenida en <**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">ctype.h **>. Esto significa que además de estar implementada como una función en la correspondiente librería (que se utiliza con los argumentos señalados en el manual), está definida como una macro de preprocesado en <**<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">ctype.h **>, de forma que salvo indicación contraria al compilador, el preprocesador transforma la llamada del programador en otra serie de sentencias equivalentes que utilizan los mismos argumentos. El resultado es que en el código resultante, que luego pasa al compilador y al enlazador, no existe nada parecido a una llamada a una función **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">isalnum ** (técnicamente el proceso es una sustitución **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">inline ** de la función de librería.  <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">﻿ <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">Para evitar que esto ocurra y por consiguiente que la llamada a **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">islanum ** nunca llegue a producirse, basta con indefinir la correspondiente directiva. Esto se hace incluyendo al principio del código, y debajo de la línea <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">#include <ctype.h>, una línea de preprocesado adecuada, en este caso: <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">#undef isalnum , con lo que el **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">#define ** del preprocesador quedará sin efecto, con el resultado de que todas las invocaciones a **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">isalnum ** de nuestro código serán respetadas por el preprocesador. Más tarde el enlazador cargará el código de **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">isalnum ** (que extrae de la librería) con el resto de nuestro programa, y colocará en cada punto de nuestro código donde aparezca una invocación a **<span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;">isalnum **, un salto a la dirección adecuada. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">En estos casos, el resultado es el mismo en ambas modalidades: como macro (por defecto) o como función de librería. La elección de una u otra es cuestión de optimización. Para tomar una decisión es necesario comprobar y valorar dos aspectos: > >
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">El tamaño del ejecutable que resulta en uno y otro caso. Posiblemente mayor si se utiliza la función muchas veces y se adopta la macro.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #000000; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; text-align: left; text-align: left; text-decoration: none; text-decoration: none; vertical-align: baseline; vertical-align: baseline;"><span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; text-align: left; text-decoration: none; vertical-align: baseline;"><span style="font-family: 'Comic Sans MS',cursive;">La velocidad de ejecución. Posiblemente mayor si se utiliza la función muchas veces (en bucles muy largos) y se utiliza la macro.