[C++] unordered_map
2026.03.17. 11:33
unordered_map : 해시 기반 컨테이너
(헤더: #include <unordered_map>)
📦 기본 선언
#include <unordered_map>
std::unordered_map<std::string, int> m;🔑 1. 값 삽입 (insert / [] / emplace)
✔️ insert
m.insert({"apple", 3});✔️ operator[]
m["banana"] = 5;key 없으면 자동 생성됨
✔️ emplace (추천)
m.emplace("orange", 7);불필요한 복사 없이 삽입 (성능 좋음)
🔍 2. 값 접근
m["apple"]; // 값 반환 (없으면 생성됨 ⚠️)
m.at("apple"); // 값 반환 (없으면 예외 발생)🔎 3. 탐색
✔️ find
auto it = m.find("apple");
if (it != m.end()) {
std::cout << it->second;
}✔️ count
if (m.count("apple")) {
// 존재함
}❌ 4. 삭제
m.erase("apple"); // key로 삭제
m.erase(it); // iterator로 삭제
m.clear(); // 전체 삭제📏 5. 크기 관련
m.size(); // 원소 개수
m.empty(); // 비었는지🔁 6. 순회 (iteration)
for (auto& [key, value] : m) {
std::cout << key << " " << value << "\n";
}또는
for (auto it = m.begin(); it != m.end(); ++it) {
std::cout << it->first << " " << it->second << "\n";
}⚙️ 7. 기타 유용한 함수
✔️ bucket_count, load_factor
m.bucket_count();
m.load_factor();✔️ rehash, reserve
m.reserve(1000); // 미리 공간 확보 (성능 최적화)⚡ 실무에서 자주 쓰는 핵심 TOP 5
m[key] = value;
m.find(key);
m.erase(key);
m.size();
for (auto& [k,v] : m)⚠️ 중요한 포인트 (면접 단골)
1. unordered_map 특징
평균 O(1)
해시 기반
순서 보장 ❌
2. [] 사용 주의
m["new_key"]; // 값 없으면 생성됨✅ 한 줄 정리
unordered_map은 빠른 조회(O(1))를 위한 해시맵이고,insert / find / erase / []가 핵심이다.