ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algorithm/c++] STL: Map, Hash_Map 알아보기
    Algorithm 2023. 1. 24. 22:15

    Map, Hash_Map 톺아보기

    1.1 시퀀스 컨테이너와 연관 컨테이너

    STL 컨테이너는 크게 시퀀스 컨테이너와 연관 컨테이너로 나눈다.

    시퀀스 컨테이너는 vector, list, deque와 같이 순서 있게 자료를 보관한다.

    연관 컨테이너는 어떠한 Key와 짝을 이루어 자료를 보관한다. 그래서 자료를 넣거나 빼고 찾을 때는 Key가 필요하다.

     

    1.2 연관 컨테이너

    연관 컨테이너로 map, set, hash_map, hash_set이 있다. 이것들은 Key로 사용하는 값이 중복되지 않은 때 사용한다.

    만약 중복되는 key를 사용할 때는 컨테이너 앞에 "multi"를 붙인 multi_map, multi_set, hash_multimap, hash_multiset을 사용한다. 

     

    1.2.1. map, set과 hash_map, hash_set의 차이

    map과 set 컨테이너는 자료를 정렬하여 저장한다. 그래서 반복자로 저장된 데이터를 순회할 때 순서로 순회하지 않고 정렬된 순서로 순회한다. 그에 반해 hash_map, hash_set정렬하지 않고 자료를 저장한다. 또 hash라는 자료구조를 사용함으로 원소를 빠르게 검색한다.

     

    1.3 Hash_map의 주요 멤버들

    멤버 설명
    begin 첫 번째 원소의 랜덤 접근 반복자를 반환
    clear 저장한 모든 원소를 삭제
    empty 저장한 요소가 없으면 true 반환
    end 마지막 원소 다음의(미 사용 영역) 반복자를 반환
    erase 특정 위치의 원소나 지정 범위의 원소들을 삭제
    find Key와 연관된 원소의 반복자 반환
    insert 원소 추가
    lower_bound 지정한 Key의 요소가 있다면 해당 위치의 반복자를 반환 
    rbegin 역방향으로 첫 번째 원소의 반복자를 반환
    rend 역방향으로 마지막 원소 다음의 반복자를 반환
    size 원소의 개수를 반환
    upper_bound 지정한 Key 요소가 있다면 해당 위치 다음 위치의 반복자 반환

     

    2.1. Map의 자료구조와 사용

    map의 자료구조는 '트리(tree)'이다. 

    map은 많은 자료를 정렬하여 저장하고 있고, 빠른 검색을 필요로 할 때 자주 사용한다.

    앞서 말했듯이 map은 자료를 저장할 때 내부에서 자동으로 정렬하고 hash_map은 정렬하지 않는다.

     

    2.2. Map 사용방법

    보통 map을 사용하는 방법은 아래와 같습니다.

    map< key 자료 type, value 자료 type > 변수 이름

    Map의 기본 정렬방식은 오름차순이다. 만약 다른 방식으로 정렬하고 싶으면 아래와 같이 하면 된다.

    map< key 자료 type, value 자료 type, 비교 함수 > 변수 이름

     

    2.3. Map의 주요 멤버들

    멤버 설명
    begin 첫 번째 원소의 랜덤 접근 반복자를 반환
    clear 저장하고 있는 모든 원소를 삭제
    empty 저장 하고 있는 요소가 없으면 true 반환
    End 마지막 원소 다음의(미 사용 영역) 반복자를 반환
    erase 특정 위치의 원소나 지정 범위의 원소들을 삭제
    Find key와 연관된 원소의 반복자 반환
    insert 원소 추가
    lower_bound 지정한 key의 요소를 가지고 있다면 해당 위치의 반복자를 반환 
    operator[] 지정한 key 값으로 원소 추가 및 접근
    rbegin 역방향으로 첫 번째 원소의 반복자를 반환
    rend 역방향으로 마지막 원소 다음의 반복자를 반환
    size 원소의 개수를 반환
    upper_bound 지정한 key 요소를 가지고 있다면 해당 위치 다음 위치의 반복자 반환
Designed by Tistory.