0Pricing
Zig Academy · Pelajaran

Daftar Dinamis dengan ArrayList

Perbesar buffer yang didukung pengalokasi.

Daftar Dinamis dengan ArrayList adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.

Buffer yang Dapat Bertumbuh

Terkadang Anda belum mengetahui ukurannya sejak awal. std.ArrayList adalah array dinamis yang bertumbuh saat Anda menambahkan item, dengan dukungan allocator. 📈

Tipe Generik

ArrayList adalah tipe generik: Anda menyebutkan tipe elemen sekali, lalu mendapatkan list yang seluruh elemennya bertipe tersebut dengan keamanan tipe penuh.

const List = std.ArrayList(i32);

Buat dengan init

Anda membuat list dengan init, lalu memberikan allocator yang akan digunakannya untuk bertumbuh. Allocator tersebut tetap bersama list sepanjang masa hidupnya.

var list = std.ArrayList(i32).init(allocator);

Selalu Gunakan deinit

List memiliki memori heap, jadi pasangkan init dengan deinit untuk membebaskannya. defer tepat setelah init membuat pembersihan berlangsung otomatis.

var list = std.ArrayList(i32).init(a);
defer list.deinit();

Tambahkan Item

Tambahkan satu elemen dengan append. Operasi ini mungkin perlu memperbesar buffer, sehingga dapat gagal dan harus dipanggil dengan try.

try list.append(7);

Akses Datanya

Isi saat ini berada dalam slice .items. Anda dapat membaca, mengindeks, dan melakukan iterasi pada slice tersebut seperti slice Zig lainnya.

for (list.items) |n| std.debug.print("{}\n", .{n});

Panjang dan Kapasitas

Panjang adalah list.items.len: jumlah nilai yang Anda simpan. Kapasitas adalah ruang yang dicadangkan, yang mungkin lebih besar untuk menghindari pertumbuhan ulang yang terlalu sering.

Cadangkan Lebih Awal

Jika Anda mengetahui perkiraan ukuran, panggil ensureTotalCapacity terlebih dahulu. Satu kali pencadangan menghindari alokasi ulang berulang saat list terisi.

try list.ensureTotalCapacity(100);

Hapus Item

Ambil elemen terakhir dengan pop, atau hapus elemen di tengah berdasarkan indeks. List mengurangi panjangnya, tetapi mempertahankan kapasitasnya.

const last = list.pop();

Serahkan Kepemilikan

Panggil toOwnedSlice untuk mengambil buffer sebagai slice biasa. List menjadi kosong, dan Anda bertanggung jawab untuk membebaskannya.

const slice = try list.toOwnedSlice();

Dibangun dari Dasar-Dasarnya

ArrayList hanyalah alloc, penyalinan, dan free yang dilakukan untuk Anda. Ini menunjukkan sejauh mana allocator eksplisit dapat digunakan melalui tipe yang rapi dan dapat dipakai ulang. ✅

Pemeriksaan Singkat

Ingat apa yang harus Anda lakukan saat ArrayList tidak lagi digunakan.

Ringkasan

Anda telah mempelajari bahwa std.ArrayList bertumbuh secara dinamis dengan allocator: gunakan init, append dengan try, baca .items, dan selalu panggil deinit setelah selesai. 🎯

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Daftar Dinamis dengan ArrayList” gratis?

Ya — teks lengkap “Daftar Dinamis dengan ArrayList” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Daftar Dinamis dengan ArrayList”?

Perbesar buffer yang didukung pengalokasi. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Zig Academy?

Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Daftar Dinamis dengan ArrayList” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?

Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Zig Tidak Memiliki Alokasi Tersembunyi
  2. Antarmuka Pengalokasi
  3. alloc, free, create, destroy
  4. Daftar Dinamis dengan ArrayList
← Kembali ke Zig Academy