C ++ de programación: las operaciones en una lista entera
Algunos programas de C ++ pueden hacer frente a los datos, ya que llega y prescindir de ella. La mayoría de los programas, sin embargo, deben almacenar datos para su posterior procesamiento. Una estructura que se utiliza para almacenar datos es conocido genéricamente como una contenedor o una colección. (Mucha gente utiliza los términos indistintamente.)
Programas Empezando por lo general dependen en gran medida de la matriz de almacenamiento de datos. El recipiente de matriz tiene un par de propiedades bonito: Almacena y recupera las cosas rápidamente. Además, la matriz se puede declarar para celebrar cualquier tipo de objeto de una forma de tipo seguro. Sopesarse con estas ventajas, sin embargo, son dos grandes aspectos negativos.
En primer lugar, debe conocer el tamaño de la matriz en el momento de su creación. Este requisito no es generalmente posible, aunque tendrá a veces saber que el número de elementos no puede exceder de algunos " valor grande ".
Los virus, sin embargo, comúnmente explotan este tipo de " no puede ser mayor que este " suposición, que resulta ser incorrecta. No hay forma real de " crecer " una serie excepto para declarar una matriz nueva y copiar el contenido de la matriz de edad en la versión más nueva, más grande.
En segundo lugar, insertar o quitar elementos en cualquier lugar dentro de la matriz implica elementos de copiado dentro de la matriz. Esto es costoso en términos de memoria y tiempo de cálculo. Clasificación de los elementos dentro de una matriz es aún más caro.
C ++ ahora viene con la biblioteca estándar de plantillas, o STL, que incluye diferentes tipos de contenedores, cada uno con su propio conjunto de ventajas (y desventajas).
La Biblioteca de plantillas estándar C ++ es una biblioteca muy grande de contenedores a veces complejas. Esta sesión se considera sólo una visión general de la potencia de la STL.
La biblioteca STL define ciertas operaciones en toda la lista. Por ejemplo, el Lista :: sort () método dice " voy a ordenar la lista para usted si usted me dirás qué objetos ir primero ". Esto se hace mediante la definición operatorlt; (const T, const T). Este operador ya está definido para los tipos intrínsecas y muchas clases de biblioteca tales como cuerda. Por ejemplo, usted no tiene que hacer nada para ordenar una lista de números enteros:
listapuntajes-scores.push_back (10) -scores.push_back (1) -scores.push_back (5) -scores.sort () -
El programador debe definir su propio operador de comparación para sus propias clases si quiere C ++ para ordenarlos. Por ejemplo, el siguiente tipo de comparación Estudiante objetos por su identificación de estudiante:
operatorlt bool; (Estudiante const s1, Estudiante const s2) {return s1.ssID lt; s2.ssID-}