*ฅ^•ﻌ•^ฅ* ✨✨  HWisnu's blog  ✨✨ о ฅ^•ﻌ•^ฅ

Resizing Array - std.ArrayList

Introduction

Zig's standard library provides an ArrayList data structure that can be used to create dynamic arrays.

//
// Use ArrayList to resize array
//

const std = @import("std");
const print = std.debug.print;
const pageAlloc = std.heap.page_allocator;
const arenaAlloc = std.heap.ArenaAllocator;

pub fn main() !void {

    var arena = arenaAlloc.init(pageAlloc);
    defer arena.deinit();
    const allocator = arena.allocator();

    var arr_m = std.ArrayList(i32).init(allocator);
    defer arr_m.deinit();

    for (17..52) |i| {
        try arr_m.append(@intCast(i));
    }

    print("\nUsing ArrayList to resize array: \n", .{});
    print("Capacity: {d}\n", .{arr_m.capacity});
    print("Last index: {d}\n", .{arr_m.items.len - 1});
    print("First element: {d}\n", .{arr_m.items[0]});
    print("Last element: {d}\n", .{arr_m.items[arr_m.items.len - 1]});
}

Pros and Cons

If there are thousands or even tens of thousands small memory allocations scattered all over a program, it might be better to use custom function as explained in this article.

#code snippet #programming #zig