Listas dinámicas con ArrayList
Haga crecer un búfer respaldado por un allocator.
Listas dinámicas con ArrayList es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Un búfer expandible
A veces no conoce el tamaño de antemano. std.ArrayList es un array dinámico que crece a medida que añade elementos y que utiliza un allocator. 📈
Es genérico
ArrayList es un tipo generic: indica una vez el tipo de elemento y obtiene una lista exactamente de ese tipo, con seguridad de tipos completa.
const List = std.ArrayList(i32);Créelo con init
Puede crear una lista con init, proporcionándole el allocator que utilizará para crecer. El allocator permanece asociado a la lista durante toda su vida útil.
var list = std.ArrayList(i32).init(allocator);Use siempre deinit
Una lista posee memoria del heap, así que debe emparejar init con deinit para liberarla. Un defer justo después de init hace que la limpieza sea automática.
var list = std.ArrayList(i32).init(a);
defer list.deinit();Añadir elementos
Añada un elemento con append. Puede que sea necesario ampliar el búfer, por lo que la operación puede fallar y se invoca con try.
try list.append(7);Acceder a los datos
El contenido actual se encuentra en el slice .items. Puede leerlo, indexarlo y recorrerlo igual que cualquier otro slice de Zig.
for (list.items) |n| std.debug.print("{}\n", .{n});Longitud y capacidad
La length es list.items.len: la cantidad de valores almacenados. La capacidad es el espacio reservado, que puede ser mayor para evitar ampliaciones frecuentes.
Reservar por adelantado
Si conoce aproximadamente el tamaño, llame primero a ensureTotalCapacity. Reservar una sola vez evita reasignaciones repetidas a medida que la lista se llena.
try list.ensureTotalCapacity(100);Eliminar elementos
Quite el último elemento con pop o elimine uno intermedio mediante su índice. La lista reduce su longitud, pero conserva su capacidad.
const last = list.pop();Transferir la propiedad
Llame a toOwnedSlice para extraer el búfer como un slice normal. La lista queda vacía y usted pasa a ser responsable de liberarlo.
const slice = try list.toOwnedSlice();Basado en los fundamentos
ArrayList se encarga por usted de hacer alloc, copiar y liberar. Demuestra hasta dónde llegan los allocators explícitos mediante un tipo ordenado y reutilizable. ✅
Comprobación rápida
Recuerde qué debe hacer cuando deja de utilizar un ArrayList.
Resumen
Ha aprendido que std.ArrayList crece dinámicamente con un allocator: init, append con try, lectura de .items y siempre deinit al terminar. 🎯
Preguntas frecuentes
¿La lección «Listas dinámicas con ArrayList» es gratis?
Sí — el texto completo de «Listas dinámicas con ArrayList» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Listas dinámicas con ArrayList»?
Haga crecer un búfer respaldado por un allocator. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Listas dinámicas con ArrayList»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Por qué Zig no tiene asignaciones ocultas
- La interfaz Allocator
- alloc, free, create, destroy
- Listas dinámicas con ArrayList