ContenedoresdeSTL
Páginas: 9 (2132 palabras)
Publicado: 14 de abril de 2015
Javi Agenjo 2010
Universitat Pompeu Fabra
Standard Template Library
La Standard Template Library es una librería estandar que
contiene todo tipo de contenedores pensados para trabajar en
C++. Al ser estándar viene en todos los compiladores de C.
Es multiplataforma y está optimizada para que funcionen de la
manera más eficiente.
Además usan un interfaz común que facilita eltrabajo con
diferentes tipos de contenedores.
Dentro de STL podemos encontrar vectores, listas, pilas,
conjuntos, tabla de hash y otros muchos tipos de
contenedores, además de algoritmos para trabajar con ellos.
Por qué es importante usar STL
STL ha sido testeada durante décadas por infinidad de
programadores por lo que es muy segura y fiable.
Ademas las diferentes implementaciones de STL estanpensadas para sacar el máximo partido al hardware.
Evitan cometer fallos que puedan producir agujeros en la
memoria ya que toda la gestión de la memoria del contenedor
es automática.
Al ser templates casi todo se resuelve en tiempo de
compilación, por lo que es más rápida que otros tipos de
contenedores.
Qué es un contenedor?
Un contenedor es un elemento de código que nos permite
almacenar yrecuperar un conjunto de datos de manera
cómoda y eficiente.
Existen diferentes contenedores en función de cómo queremos
que se gestione su almacenamiento en memoria.
No existe un contenedor mejor que otro, solo uno más
adecuado para cada caso, por eso es importante conocer las
particularidades de cada contenedor para saber cual emplear
en cada situación.
STL no tiene restricciones sobre el tipo dedatos que podemos
guardar en un contenedor, ya que se basa en templates.
Qué son los templates?
Los templates nos permiten crear clases en las que algun tipo de
datos no está especificado en la definición de la clase, dejando la
libertad al programador de instanciar esta clase con un tipo especifico
más adelante.
A ese tipo se le da un nombre genérico (por ejemplo. T).
Cuando el programadorinstancia una clase que viene de un template
le debe indicar el tipo de datos que quiere usar, y el compilador
reemplaza en el template el tipo genérico por el tipo que le indica y
acto seguido compila la clase.
Los templates usan la sintaxis <...> para indicar el parametro:
//aquí creamos un vector de enteros
std::vector
Qué son los templates?
Un ejemplo de template y elresultado generado al expandir el
template en tiempo de compilación:
Defino un template:
template
class MyClass
{
T data;
void setData(T v);
};
Si pongo MyClass
algun lugar el compilador compilará:
class MyClass
{
float data;
void setData(float v);
};
Usar templates hace el código más genérico pero puede dar pie a
errores ya que no sabemos qué tipo se le pasará a una clase al definirel template.
Por qué usa templates la libreria STL?
Porque de esta manera cualquier contenedor de STL puede
almacenar cualquier tipo de datos que queramos, incluso
clases creadas por nosotros.
Sin embargo hay que tener presente una cosa, algunos
contenedores requieren que el tipo de datos que le pasemos
tenga definidos algunos operadores, como el de igualdad
(A==B) o en el caso de los maps, elde "mayor qué" (A > B).
Si el tipo que le pasamos tiene algún error o no tiene los
operadores necesarios para ese contenedor, al expandirse el
template se generará un error de compilación y el compilador
nos indicará el error en una línea del template de STL lo cual
puede resultar confuso para el programador.
Qué es un iterador?
Un iterador es una estructura pensada para apuntar a un elemento deun contenedor.
Tiene ciertas ventajas, la principal es que homogenizan el acceso a
un contenedor sin importar de qué clase es el contenedor.
También permiten saltar de un elemento al siguiente o al anterior, o
saber si hemos llegado al final de un contenedor.
Los iteradores son muy importantes ya que estan muy optimizados y
para ciertos contenedores son la única manera que tenemos de poder...
Leer documento completo
Regístrate para leer el documento completo.