[자료구조] Set/Map 계열 컨테이너

김현아·2025년 9월 1일

기술면접

목록 보기
7/14
post-thumbnail

🔹Set

중복되지 않은 고유한 요소들의 집합을 저장하는 자료구조
기본적으로 오름차순으로 정렬된다. (std::greater를 사용하면 내림차순도 가능)
내부적으로 Red-Black Tree(균형 이진 탐색 트리) 로 구현되어 있다.
삽입, 삭제, 검색 연산: O(log n)

🔹 unordered_set
정렬되지 않은 set
내부적으로 해시 테이블을 사용한다.
삽입, 삭제, 검색 연산: 평균 O(1), 최악 O(n)
중복된 요소는 허용하지 않는다.

  • 주요 함수
    insert() : 새로운 요소 삽입 (중복 삽입 시 무시)
    erase() : 특정 요소 삭제, iterator로 범위 삭제 가능
    find() : 특정 요소 검색 (없으면 end() 반환)
    count() : 존재하면 1, 없으면 0 반환
    clear() : 모든 요소 삭제

🔹 pair
두 개의 데이터를 하나의 객체로 묶는 자료구조
멤버 변수: first, second
주로 map, multimap 등에서 key-value 쌍을 표현할 때 사용

🔹 map
key-value 쌍으로 이루어진 연관 컨테이너
내부적으로 Red-Black Tree(균형 이진 탐색 트리) 로 구현
자동으로 key 기준 오름차순 정렬
삽입, 삭제, 검색 연산: O(log n)
key는 중복 불가, value는 중복 가능

🔹 unordered_map
key-value 쌍으로 이루어진 연관 컨테이너
내부적으로 해시 테이블로 구현
정렬되지 않는다
key는 중복 불가
삽입, 삭제, 검색 연산: 평균 O(1), 최악 O(n)

  • 주요 함수
    operator[] : 키로 값에 접근 (없으면 새로 삽입 후 접근)
    insert() : 새로운 (key, value) 삽입 (중복 키 무시)
    erase() : 특정 키 삭제, iterator로 범위 삭제 가능
    find() : 특정 키 검색 (없으면 end() 반환)
    count() : 존재하면 1, 없으면 0 반환
    clear() : 모든 요소 삭제

🔹 multimap
하나의 key에 여러 개의 value를 저장할 수 있는 연관 컨테이너
내부적으로 Red-Black Tree 로 구현
삽입, 삭제, 검색 연산: O(log n)
key는 중복 허용

  • 주요 함수
    insert() : (key, value) 삽입 (같은 key 중복 허용)
    erase() : 특정 키 삭제, iterator로 범위 삭제 가능
    find() : 특정 키 검색 (없으면 end() 반환)
    count() : 특정 키에 해당하는 value 개수 반환
    equal_range() : 특정 키에 해당하는 모든 value 범위 반환
    ⚠️ multimap은 operator[]를 지원하지 않는다.

0개의 댓글