[Rust 공식문서 한국어 정리] 125. Rust BTreeMap<K,V> 가이드
[Rust 공식문서 한국어 정리] 125. Rust BTreeMap 가이드
원문 제목: Struct std::collections::BTreeMap
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Rust의 BTreeMap가 제공하는 B-트리 기반 정렬 맵을 상세히 다룹니다.
BTreeMap과 HashMap의 차이, 정렬과 범위 조회의 이점을 학습합니다.
BTreeMap의 삽입, 조회, 범위 검색 메서드 활용법을 정리합니다.
B-트리의 특성과 BTreeMap의 메모리 레이아웃을 설명합니다.
정렬된 키 순회와 범위 쿼리가 필요한 상황에서 BTreeMap을 선택하는 기준을 다룹니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① BTreeMap — B-트리 기반 정렬 키-값 맵
② Ord — 키 타입의 필수 트레이트(정렬 기준)
③ 범위 조회 — range 메서드로 정렬된 범위 검색
④ B-트리 — 균형 트리로 디스크 친화적 구조
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BTreeMap은 B-트리 기반의 정렬된 키-값 저장소입니다.
키는 Ord 트레이트를 구현해야 하며 키 순서대로 데이터가 정렬됩니다.
HashMap과 달리 BTreeMap은 키의 정렬 순서를 보장합니다.
insert(key, value)로 삽입하며 get(&key)로 조회합니다.
remove(&key)로 삭제하고 contains_key(&key)로 존재 여부를 확인합니다.
range(range) 메서드는 정렬된 범위 내의 키-값 쌍을 반복자로 반환합니다.
예를 들어 map.range(1..5)는 키 1 이상 5 미만의 범위를 순회합니다.
range는 RangeBounds를 구현한 타입을 인자로 받습니다.
first_key_value()는 최소 키와 값을 반환합니다.
last_key_value()는 최대 키와 값을 반환합니다.
pop_first()와 pop_last()는 최소/최대 키-값을 제거하고 반환합니다.
Entry API도 HashMap과 동일하게 제공됩니다.
B-트리는 노드에 여러 키를 저장하여 트리 높이를 줄입니다.
이는 디스크 접근이나 캐시 효율성을 높이는 구조입니다.
BTreeMap의 순회는 키 순서대로 이루어집니다.
BTreeSet도 동일한 B-트리 구조를 공유합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
정렬된 키 순회가 필요할 때 HashMap 대신 BTreeMap을 선택합니다.
범위 쿼리가 빈번한 로그, 타임라인, 구간 검색에 BTreeMap을 사용합니다.
pop_first/pop_last로 우선순위 큐처럼 최소/최대 요소를 추출합니다.
#[derive(Ord)]로 커스텀 키의 정렬 순서를 정의합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BTreeMap은 정렬된 키 순서와 범위 조회가 필요할 때 최적입니다.
Ord 트레이트를 요구하며 HashMap과 상호 보완적으로 사용됩니다.
B-트리 구조는 캐시 효율성과 범위 접근에 유리합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html
BTreeMap Methods: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html
#Rust #BTreeMap #B트리 #정렬맵 #번역

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