자료구조

C++ < unordered_map> 사용법

1minair 2022. 11. 20. 18:24
728x90

C++ 에서 제공하는 map은 데이터를 정렬하여 저장.

unordered_map은 정렬을 하지 않고 저장.

unordered_map의 자료구조는 "해시 테이블"이다.

: 좋은 경우 탐색 시간복잡도 O(1)이다.

 

< 해시 테이블이란 >

hash_function("key") : 해시함수에 key값을 대입하면 해시 테이블의 인덱스를 반환해줌

-> 이러한 인덱스를 가지고 배열로 구성된 hash table의 value 값에 상수시간 내에 접근가능.

 

#include <unordered_map> 선언

C++ STL 이기 때문에 using namespace std;

 

생성

unordered_map<key 자료형, value 자료형> 변수명;

ex) unordered_map<string, int> um;

 

< 멤버 함수 >

1. 삽입

insert( {key, value} ) , insert(make_pair(key, value))

  • 맵에 pair<key,value> 를 추가하는 함수
  • key값이 존재한다면 삽입하지 않는다. >> 중복을 허용하지 않는다.

 

2. 삭제

erase( key )

  • 맵에서 key에 해당하는 원소 삭제

clear( )

  • 맵을 초기화하는 함수 (모든 원소들을 삭제)

 

3. 검색

find( key )

  • 맵에서 key에 해당하는 원소를 찾는 함수
  • key 값이 있다면 해당 key의 iterator 리턴
  • 아닌 경우에는 um.end() 리턴 <- end iterator

count( key )

  • 맵에서 key에 해당하는 원소의 갯수를 반환하는 함수
  • key 값이 있다면 1 (true)를 반환
  • 아닌 경우에는 0 (false)를 반환

empty( )

  • 맵이 비어있는지 확인하는 함수
  • if unordered_map is empty, then return 1 else 0

size( )

  • 맵의 크기를 확인하는 함수
  • return size_type ( unsigned int )

operator [ ]

  • 맵에서 key를 통해 value를 지정하는 operator
  • map_name[key] = value