ArrayList를 사용하는 동적 목록
할당자가 뒷받침하는 버퍼를 확장합니다.
ArrayList를 사용하는 동적 목록은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
늘어나는 버퍼
처음부터 크기를 알 수 없는 경우가 있습니다. std.ArrayList는 항목을 추가할수록 커지는 동적 배열이며, 할당자를 기반으로 동작합니다. 📈
제네릭입니다
ArrayList는 제네릭 타입입니다. 요소 타입을 한 번 지정하면 완전한 타입 안전성을 갖춘 해당 타입 전용 목록을 얻습니다.
const List = std.ArrayList(i32);init으로 만들기
init으로 목록을 만들면서, 목록을 키우는 데 사용할 할당자를 전달합니다. 이 할당자는 목록의 전체 수명 동안 목록과 함께 유지됩니다.
var list = std.ArrayList(i32).init(allocator);항상 deinit하기
목록은 힙 메모리를 소유하므로 init과 deinit을 짝지어 메모리를 해제해야 합니다. init 바로 뒤에 defer를 작성하면 정리가 자동으로 이루어집니다.
var list = std.ArrayList(i32).init(a);
defer list.deinit();항목 추가하기
append로 요소 하나를 추가합니다. 버퍼를 늘려야 할 수 있으므로 실패할 수 있으며, 따라서 try와 함께 호출합니다.
try list.append(7);데이터에 접근하기
현재 내용은 .items 슬라이스에 있습니다. 다른 Zig 슬라이스와 마찬가지로 이 슬라이스를 읽고, 인덱스로 접근하고, 순회할 수 있습니다.
for (list.items) |n| std.debug.print("{}\n", .{n});길이와 용량
길이는 list.items.len으로, 저장한 값의 개수입니다. 용량은 미리 확보한 공간이며, 목록을 자주 다시 키우지 않도록 더 클 수 있습니다.
미리 확보하기
대략적인 크기를 알고 있다면 먼저 ensureTotalCapacity를 호출하세요. 한 번 미리 확보하면 목록이 차오를 때 반복적인 재할당을 피할 수 있습니다.
try list.ensureTotalCapacity(100);항목 제거하기
pop으로 마지막 요소를 제거하거나, 인덱스로 중간 요소를 제거할 수 있습니다. 목록의 길이는 줄어들지만 용량은 유지됩니다.
const last = list.pop();소유권 넘기기
toOwnedSlice를 호출해 버퍼를 일반 슬라이스로 꺼냅니다. 목록은 비워지고, 이제 그 슬라이스를 해제할 책임은 사용자에게 있습니다.
const slice = try list.toOwnedSlice();기본 기능 위에 구축하기
ArrayList는 alloc, 복사, free를 대신 처리해 주는 것에 불과합니다. 명시적인 할당자와 깔끔하고 재사용 가능한 타입으로 얼마나 많은 일을 할 수 있는지 보여 줍니다. ✅
빠른 확인
ArrayList를 더 사용하지 않게 될 때 무엇을 해야 하는지 떠올려 보세요.
복습
std.ArrayList가 할당자와 함께 동적으로 커진다는 것을 배웠습니다. init으로 초기화하고, try와 함께 append하고, .items를 읽고, 작업이 끝나면 항상 deinit해야 합니다. 🎯
자주 묻는 질문
“ArrayList를 사용하는 동적 목록” 강의는 무료인가요?
네 — “ArrayList를 사용하는 동적 목록” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“ArrayList를 사용하는 동적 목록”에서 뭘 배우나요?
할당자가 뒷받침하는 버퍼를 확장합니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Zig Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“ArrayList를 사용하는 동적 목록” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Zig에 숨은 할당이 없는 이유
- 할당자 인터페이스
- alloc, free, create, destroy
- ArrayList를 사용하는 동적 목록