Senarai Dinamik dengan ArrayList
Besarkan penimbal yang disokong oleh pengagih.
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. 🎯
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
- Sebab Zig Tiada Peruntukan Tersembunyi
- Antara Muka Pengagih
- alloc, free, create, destroy
- Senarai Dinamik dengan ArrayList