<unordered_map>, <unordered_set>

Yongs12 ㅣ 2023. 7. 11. 17:05

unordered_map은 해시 테이블 기반의 STL로 키를 해시함수를 통해 인덱스가 정해지며

O(1)로 요소에 빠르게 접근할 수 있다.

<map>과 달리 순서는 정렬되지 않지만 동일하게 키의 중복을 허용하지 않는다.

 

unordered_set은 unordered_map과 동일한 자료구조이지만 키 : 값이 아닌 고유한 값만을 저장한다.

 

#include <iostream>
#include <unordered_map>

int main()
{
    std::unordered_map<int, int> unorderedMap;

    // 해시맵에 요소를 삽입 한다.
    unorderedMap[0] = 5;
    unorderedMap.insert(std::make_pair(1, 1));

    // 모던 c++방식 initializer_list
    unorderedMap.insert({ 2, 5 });

    // 해시맵의 모든 요소를 삭제
    unorderedMap.clear();

    // 해시맵의 요소의 갯수를 반환
    const size_t size = unorderedMap.size();

    // 해시맵이 비어있는지 확인
    const bool isEmpty = unorderedMap.empty();

    // 해시맵의 버킷 수를 반환
    const size_t bucket = unorderedMap.bucket_count();

    // 해시맵의 키를 검색한다.
    unorderedMap.find(0);

    // Iterator를 통한 순회
    std::unordered_map<int, int>::iterator uMapIter = unorderedMap.begin();

    for (; uMapIter != unorderedMap.end(); ++uMapIter)
    {
        std::cout << uMapIter->second << std::endl;
    }

    return 0;
}

 

 

std::unordered_map의 내장 함수 시간복잡도, std::unordered_set도 동일

함수 시간 복잡도 설명
erase() O(1) 특정 키에 해당하는 요소를 삭제
find() O(1) 특정 키에 해당하는 요소를 반환
clear() O(1) 모든 요소를 삭제
size() O(1) 해시맵의 요소의 갯수를 반환
empty() O(1) 해시맵이 비어있는지 확인

 

'C, C++' 카테고리의 다른 글

shared_ptr  (0) 2023.07.16
unique_ptr  (0) 2023.07.15
<map>, <set>  (0) 2023.07.10
<string>  (0) 2023.07.08
<array>  (0) 2023.07.07