unordered_map

김민수·2025년 1월 8일

C++

목록 보기
25/68

unordered_map키-값(key-value) 쌍을 저장하는 해시 테이블 기반의 자료 구조이다. 빠른 탐색과 삽입, 삭제를 제공하며, 키의 순서는 유지되지 않는다.


1. 특징

  • 해시 테이블 기반 : 키를 해시 함수로 처리하여 내부적으로 저장
  • O(1) 시간 복잡도 : 평균적으로 탐색, 삽입, 삭제 모두 O(1)
  • 순서 없음 : 삽입 순서나 키의 정렬 순서를 보장하지 않음
  • 유일한 키 : 모든 키는 고유해야 하며, 중복 키는 허용되지 않음
  • 임의 접근 불가 : 정렬되지 않은 키 때문에 인덱스를 통한 접근은 불가능


2. 삽입 및 삭제 (insert(), erase())

#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> umap;

    // 삽입
    umap.insert({"Grape", 40});
    umap["Orange"] = 50;

    // 삭제
    umap.erase("Grape");

    // 출력
    for (const auto& pair : umap) {
        std::cout << pair.first << ": " << pair.second << "\n";
    }

    return 0;
}


3. 탐색 (find())

#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> umap = {
        {"Apple", 10},
        {"Banana", 20},
        {"Cherry", 30}
    };

    // 키 존재 여부 확인
    auto it = umap.find("Banana");
    if (it != umap.end()) {
        std::cout << "Banana found: " << it->second << "\n";
    } else {
        std::cout << "Banana not found\n";
    }

    return 0;
}


4. 반복자

#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> umap = {
        {"Apple", 10},
        {"Banana", 20},
        {"Cherry", 30}
    };

    // 반복자를 사용한 출력
    for (auto it = umap.begin(); it != umap.end(); ++it) {
        std::cout << it->first << ": " << it->second << "\n";
    }

    return 0;
}


5. 함수

함수설명
insert()키-값 쌍 삽입. 이미 존재하는 키는 무시됨
erase()특정 키 또는 반복자를 통해 요소 삭제
find()특정 키의 반복자를 반환. 키가 없으면 end() 반환
size()컨테이너에 저장된 요소의 개수를 반환
empty()컨테이너가 비어 있는지 확인
clear()모든 요소 제거
at()키를 통해 값에 접근. 범위를 벗어나면 예외 발생


6. 사용 시기

  • unordered_map은 해시 테이블 기반의 키-값 쌍 저장 컨테이너로, 빠른 탐색과 삽입이 필요할 때 적합하다.
  • 키의 순서가 중요하지 않은 경우 unordered_map을, 키가 정렬되어야 하는 경우 map을 사용하는 것이 좋다.
  • 대규모 데이터 처리, 빈도수 계산, 간단한 키-값 매핑 작업에 유용하게 사용할 수 있다.
profile
안녕하세요

0개의 댓글