자료구조
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