set과 map이 가끔 헷갈리는 걸 보니 완벽히 이해하지 못했었나보다.
그래서 차이점을 표로 정리해보았다.
| 항목 | set | map |
|---|---|---|
| 데이터 구조 | **값(value)**만 저장 | 키(key)-값(value) 쌍 저장 |
| 중복 허용 여부 | 기본적으로 중복 ❌ (set), 중복 허용은 multiset | 기본적으로 중복 키 ❌ (map), multimap으로 허용 가능 |
| 사용 목적 | 특정 값이 존재하는지 여부 확인, 정렬된 고유 집합 | 키를 통해 값을 빠르게 찾거나 관리 |
| 사용 예시 | set<int> s = {1, 2, 3}; | map<string, int> m = {{"apple", 3}}; |
| 삽입 형식 | s.insert(4); | m["apple"] = 5; 또는 m.insert({"apple", 5}); |
| 접근 방식 | 반복자나 탐색 사용 (*it) | 키를 통해 접근 (m["apple"]) |
| 자동 정렬 여부 | O (오름차순 정렬됨) | O (키 기준으로 오름차순 정렬됨) |