[Rust 공식문서 한국어 정리] 123. Rust Vec<T> 가이드
[Rust 공식문서 한국어 정리] 123. Rust Vec 가이드
원문 제목: Struct std::vec::Vec
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Rust의 Vec가 제공하는 힙 기반 가변 길이 배열을 상세히 다룹니다.
Vec의 메모리 레이아웃, 용량 관리, 재할당 전략을 학습합니다.
요소 추가, 삭제, 검색, 변환 메서드 활용법을 정리합니다.
Vec과 슬라이스, 배열의 관계와 Deref의 의미를 설명합니다.
Vec의 소유권语义과 IntoIterator, Drain 등 고급 패턴을 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① Vec — 힙 기반 가변 길이 배열
② 용량(capacity) — 할당된 메모리 크기
③ 길이(len) — 실제 저장된 요소 개수
④ Deref<[T]> — Vec이 슬라이스 메서드를 대행
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Vec는 힙에 할당된 가변 길이 배열입니다.
Vec::new()로 빈 벡터를 생성합니다.
vec! 매크로로 리터럴 벡터를 생성합니다.
예를 들어 vec![1, 2, 3]은 Vec를 생성합니다.
vec![0; 5]는 0으로 초기화된 길이 5의 벡터를 생성합니다.
Vec::with_capacity(n)으로 미리 n개의 용량을 할당합니다.
push는 요소를 끝에 추가하고 pop은 마지막 요소를 제거하여 반환합니다.
insert(index, value)는 지정 위치에 삽입하고 remove(index)는 지정 위치를 제거합니다.
용량이 부족하면 push 시 자동으로 재할당이 발생합니다.
재할당은 보통 용량을 두 배로 늘리는 전략을 사용합니다.
len()은 요소 개수를, capacity()는 할당된 용량을 반환합니다.
shrink_to_fit()은 용량을 길이에 맞게 줄입니다.
reserve(n)은 추가 n개를 수용할 수 있도록 용량을 확보합니다.
Vec은 Deref를 구현하므로 슬라이스 메서드를 모두 사용할 수 있습니다.
sort(), sort_unstable(), binary_search(), chunks(), windows() 등을 직접 호출할 수 있습니다.
drain(range)는 지정 범위의 요소를 반복자로 제거합니다.
retain(|x| condition)으로 조건을 만족하는 요소만 남깁니다.
into_iter()는 소유권 이전 반복자를 생성합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
알려지지 않은 개수의 요소를 수집할 때 Vec을 사용합니다.
with_capacity로 예상 크기를 미리 할당하여 재할당을 줄입니다.
retain으로 필터링과 동시에 제거하여 효율적으로 정리합니다.
drain으로 벡터의 부분 범위를 다른 컬렉션으로 이동합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Vec는 Rust의 기본 가변 길이 컬렉션으로 효율적입니다.
용량 관리와 재할당 전략을 이해하면 성능을 최적화할 수 있습니다.
슬라이스와의 자동 연동으로 풍부한 메서드를 그대로 활용할 수 있습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/vec/struct.Vec.html
Vec Methods: https://doc.rust-lang.org/std/vec/struct.Vec.html
#Rust #Vec #벡터 #컬렉션 #번역

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30