C++STL과 알고리즘

map과 unordered_map

키로 값을 찾는 대표적인 표준 컨테이너인 `std::map`과 `std::unordered_map` 차이를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

cpp
std::map<std::string, int> ordered;
std::unordered_map<std::string, int> fastLookup;

설명

  • 두 컨테이너 모두 키와 값을 연결하는 사전 구조입니다.
  • std::map은 키가 정렬된 상태를 유지하고, std::unordered_map은 해시 기반으로 빠른 조회를 노립니다.
  • 순서가 중요하면 map, 평균 조회 성능이 중요하면 unordered_map을 먼저 생각하면 됩니다.
  • 없는 키에 operator[]로 접근하면 새 원소가 생성될 수 있습니다.

짧은 예제

cpp
#include <iostream>
#include <string>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> scores;
    scores["Mina"] = 1200;
    scores["Jin"] = 980;

    std::cout << scores["Mina"] << "\n";
}

빠른 정리

항목설명
std::map정렬된 키-값 컨테이너
std::unordered_map해시 기반 키-값 컨테이너
find키 존재 여부와 위치 확인
operator[]값 조회 또는 삽입
순서 유지map은 유지, unordered_map은 보장 없음

주의할 점

단순 조회만 하고 싶은데 operator[]를 쓰면 원치 않는 삽입이 일어날 수 있습니다. 존재 여부를 확인할 때는 find가 더 안전합니다.