Notas
David E. Medina R. – Computación II Facultad de Ingeniería – UNER Agosto de 2007
Introducción
La STL (del inglés Standard Template Library) es una biblioteca de clases y funciones templates creada para estandarizar y optimizar la utilización de algoritmos y estructuras de datos en el desarrollo de software en C++. La adopción de esta bibliotecaposee grandes ventajas: al ser estándar está disponible en todos los compiladores y plataformas; está libre de errores, por lo tanto se ahorrará tiempo en depurar el código; proporciona su propia gestión de memoria. En este capítulo se presenta una descripción de los componentes más importantes de la STL junto con una gama de ejemplos que permitirán visualizar su funcionamiento y la conexión queexiste entre ellos. El diseño de la Standard Template Library es el resultado de varios años de investigación dirigidos por Alexander Stepanov y Meng Lee de HewlettPackard, y David Musser del Rensselaer Polytechnic Institute. Su desarrollo se inspiró en otras librerías orientadas a objetos y en la experiencia de sus creadores en lenguajes de programación imperativos y funcionales, tales como Ada yScheme. La biblioteca presenta tres componentes básicos: contenedores, iteradores y algoritmos. Los contenedores son los objetos capaces de almacenar otros objetos, cada uno de una forma particular. Representan a las estructuras de datos más comúnmente utilizadas, como ser los arreglos lineales o las listas enlazadas. Además éstos presentan otras características adicionales que los hacen máspotentes. Por ejemplo: pueden aumentar el número de elementos que almacenan; al ser templates, pueden alojar cualquier tipo de dato o clase; casi todos los contenedores proveen iteradores (herramientas para poder acceder a sus elementos), lo que hace que los algoritmos que se aplican a ellos sean más eficientes. Los iteradores son objetos a través de los cuales se puede acceder a los elementos delcontenedor. El concepto de iterador es similar al de un puntero, sólo que al ser una clase provee mayores utilidades que éste. Pero la gran utilidad de los iteradores ocurre por el uso que de ellos hacen los algoritmos. En la biblioteca existen más de setenta algoritmos para aplicar sobre los contenedores a través de los iteradores. Hay algoritmos de búsqueda, de ordenamiento, de transformación,matemáticos, etc.
Biblioteca de plantillas estándar de C++ (STL)
Contenedores
Son una colección de las estructuras de datos más populares utilizadas habitualmente. Un contenedor es justamente eso: un lugar en donde contener o agrupar objetos del mismo tipo. La diferencia entre un contenedor y otro está en la forma en que los objetos son alojados, en cómo se crea la secuencia de elementos y lamanera en que los podrá acceder a cada uno de ellos. Éstos pueden estar almacenados en forma contigua en la memoria o enlazados a través de punteros. Esto hace que las estructuras difieran también en la forma en que se accede a los elementos, la velocidad con la cual se insertan o se eliminan estos y en la eficiencia de los algoritmos que se apliquen a ellas. La siguiente figura proporciona unaclasificación de los contenedores de la STL. Éstos se dividen en contenedores de secuencia o lineales y contenedores asociativos. Los de secuencia son vector, list y deque. Los asociativos son set, multiset, map y multimap. En esta sección se describirán las operaciones comunes de los contenedores y las estructuras de secuencia solamente. Las asociativas se postergarán para luego de haber vistoiteradores y algoritmos.
Figura 1: clasificación de los contenedores
Operaciones comunes
Antes de realizar cualquier operación con un contenedor hay que crearlo. La sintaxis utilizada para ello es la siguiente:
X < T > instancia;
Donde X representa el tipo de contenedor que se quiere utilizar y T el tipo de dato de los elementos que almacenará la estructura. Así, por ejemplo, para crear un...
Regístrate para leer el documento completo.