Zig Academy · Pelajaran

Senarai Dinamik dengan ArrayList

Besarkan penimbal yang disokong oleh pengagih.

Pelajaran 4 daripada 413 langkah

Senarai Dinamik dengan ArrayList ialah pelajaran Zig Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Zig Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Zig Academy merangkumi sejumlah 4 pelajaran.

Penimbal yang Boleh Berkembang

Kadang-kadang anda tidak mengetahui saiznya dari awal. std.ArrayList ialah tatasusunan dinamik yang berkembang apabila anda menambah item, dengan sokongan allocator. 📈

Ia Generik

ArrayList ialah jenis generik: anda menamakan jenis elemen sekali, lalu mendapat senarai yang tepat dengan jenis itu serta keselamatan jenis sepenuhnya.

const List = std.ArrayList(i32);

Ciptakannya dengan init

Anda membina senarai dengan init, sambil memberikannya allocator yang akan digunakan untuk berkembang. Allocator itu kekal bersama senarai sepanjang hayatnya.

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

Sentiasa lakukan deinit

Senarai memiliki memori heap, jadi padankan init dengan deinit untuk membebaskannya. defer sejurus selepas init menjadikan pembersihan itu automatik.

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

Tambah Item

Tambahkan satu elemen dengan append. Penimbal mungkin perlu berkembang, jadi operasi ini boleh gagal dan oleh itu dipanggil dengan try.

try list.append(7);

Capai Data

Kandungan semasa berada dalam slice .items. Anda membaca, mengindeks dan mengulangi slice itu sama seperti mana-mana slice Zig yang lain.

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

Panjang dan Kapasiti

Panjang ialah list.items.len: jumlah nilai yang anda simpan. Kapasiti ialah ruang yang diperuntukkan, yang mungkin lebih besar untuk mengelakkan pertumbuhan semula yang kerap.

Tempah Lebih Awal

Jika anda mengetahui anggaran saiz, panggil ensureTotalCapacity terlebih dahulu. Tempahan sekali mengelakkan peruntukan semula berulang apabila senarai semakin penuh.

try list.ensureTotalCapacity(100);

Buang Item

Keluarkan elemen terakhir dengan pop, atau buang elemen di tengah mengikut indeks. Senarai mengurangkan panjangnya tetapi mengekalkan kapasitinya.

const last = list.pop();

Serahkan Pemilikan

Panggil toOwnedSlice untuk mengeluarkan penimbal sebagai slice biasa. Senarai menjadi kosong, dan anda bertanggungjawab untuk membebaskannya.

const slice = try list.toOwnedSlice();

Dibina Berdasarkan Asas

ArrayList hanyalah alloc, penyalinan dan free yang dilakukan untuk anda. Ia menunjukkan sejauh mana allocator eksplisit boleh digunakan melalui jenis yang kemas dan boleh digunakan semula. ✅

Semakan Pantas

Ingat perkara yang mesti anda lakukan apabila ArrayList tidak lagi digunakan.

Ringkasan

Anda telah mempelajari bahawa std.ArrayList berkembang secara dinamik dengan allocator: lakukan init, append dengan try, baca .items dan sentiasa lakukan deinit apabila selesai. 🎯

Percuma untuk bermula

Pelajari Zig dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Senarai Dinamik dengan ArrayList” percuma?

Ya — teks penuh “Senarai Dinamik dengan ArrayList” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Zig Academy, tingkat taraf kepada CoddyKit PRO. Kursus Zig Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Senarai Dinamik dengan ArrayList”?

Besarkan penimbal yang disokong oleh pengagih. Anda berlatih Zig Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Zig Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Zig Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Senarai Dinamik dengan ArrayList” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Zig Academy ini?

Ya. Setiap pelajaran Zig Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Sebab Zig Tiada Peruntukan Tersembunyi
  2. Antara Muka Pengagih
  3. alloc, free, create, destroy
  4. Senarai Dinamik dengan ArrayList
← Kembali ke Zig Academy