Logo de Torre de Babel
Portada Libros Diseño web Artículos Glosario RSS
Buscar

Conversión de un contenedor STL a un vector C++

Una de las ventajas de utilizar C++, respecto a otros lenguajes, es la seguridad de que podemos utilizar una biblioteca estándar de patrones o plantillas, la conocida como STL, para todas nuestras necesidades de estructuras de datos y algoritmos básicos, sin perder un ápice de portabilidad entre sistemas operativos.

El uso de contenedores como listas, colas o mapas, junto con los iteradores asociados, facilita una gran cantidad de tareas que suelen aparecer en todo tipo de aplicaciones. Cuando los datos almacenados en esos contenedores han de ser facilitados a algún servicio del sistema, sin embargo, se hace necesaria una conversión previa, ya que dichos servicios no actúan sobre contenedores STL sino sobre vectores o matrices básicos. Aunque puede utilizarse un iterador para recorrer los elementos del contenedor, agregándolos individualmente a una matriz previamente declarada, nos resultará mucho más cómodo utilizar la función global copy() con que cuenta la STL.

Suponiendo que tuviésemos una lista con enteros y que nos viésemos en la necesidad de entregar esos datos a una función del sistema operativo en forma de matriz, los pasos a dar serían los siguientes:

int* Enteros = new int[ListaEnteros.size()];
copy(ListaEnteros.begin(), ListaEnteros.end(), Enteros);

Son únicamente dos líneas de código, un procedimiento mucho más breve que la obtención de un iterador y codificación de un bucle para copiar elemento a elemento.


Publicado el 26/2/2008

Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web