Saltar al contenido

Modelo por capas

Tres capas, tres preguntas

  1. Valores: qué contiene la secuencia y en qué orden: 12, 23, 31, 8.
  2. Almacenamiento: cuántas posiciones están reservadas. La capacidad no es la longitud.
  3. Cabecera: referencia al bloque, longitud y capacidad. Cambiar la referencia no cambia el significado de los valores.
Las tres capas de un vectorLa cabecera guarda tres campos: ptr, que apunta al bloque; len = 4 y cap = 8. El bloque tiene ocho posiciones: las cuatro primeras contienen 12, 23, 31 y 8, y las otras cuatro están libres, con borde punteado. Los valores son las cuatro primeras posiciones; el almacenamiento son las ocho.Cabeceraptrlen = 4cap = 8122331801234567libres: no son valoresValores: los 4 que cuenta lenAlmacenamiento: las 8 posiciones reservadas (cap)
Valores (12, 23, 31, 8), almacenamiento (8 posiciones) y cabecera (ptr, len, cap). Las posiciones libres con borde punteado no contienen valores.

En la figura, el vector tiene longitud 4 y capacidad 8: observa las ranuras libres. El modelo usa enteros de cuatro bytes y una política de crecimiento ilustrativa; no promete una capacidad universal para todos los tipos.

Cuando hay longitud 4 y capacidad 8 quedan cuatro posiciones disponibles. Leer una de ellas como si fuera un elemento sigue siendo inválido: la longitud marca el límite de los valores inicializados.

Un vector tiene longitud 5 y capacidad 12. Un programa lee v[7]. ¿Qué es cierto?