본문 바로가기
개발/C++

C++ 자료구조 - unordered map(hash map)

by devsu 2020. 6. 22.

unordered map(hash map)

map과 비슷하지만 정렬이 되어있지 않다.

insert, erase, find 모두가 O(1) 으로 수행된다

셋이나 맵의 경우 O(log n) 이었지만, unordered_set  unordered_map 의 경우 상수 시간에 원소를 삽입하고, 검색할 수 있다.

원소의 key 값(데이터형)을 hash function을 통해 생성한다.(대부분 정수값)

다른 원소이지만 같은 해시값을 가질 수 있다(해시 충돌(hash collision))

 

1. 사용

- #include<unordered_map>

- unordered_map<[data type], [data type]> [변수이름]

 

2. 생성자와 연산자(int로)

 - unordered_map<int, int> um;

   - 비어있는 unordered_map um을 생성

 

3. 멤버 함수

- um.at(idx);

   - idx번째 원소를 참조.

   - um[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전

 

- um[idx];

   - idx번째 원소를 참조.

   - um[idx] 보다 속도는 빠르지만, 범위를 점검하지 않음

 

 

- um.clear();

   - 모든 원소 제거

 

- um.insert(make_pair(key, value));

   - key, value 삽입

 

- um.begin();

  - 첫번째 원소를 가리킴(iterator 반환)

 

- um.end();

  - 마지막 원소를 가리킴(iterator 반환)

 

- um.find(key);

  - 특정 키를 가진 원소를 찾는다

 

- um.count(key);

  - 특정 키를 가진 원소의 개수

 

- um.size();

   - 원소의 갯수를 리턴

 

- um.empty();

  - 현재 컨테이너가 비어있는지 확인

 

- um2.swap(um1)

  - um1과 um2의 원소와 capacity 바꿔줌

 

- um.erase(key);

  - key의 원소를 제거

 

멤버변수가 많지만 기본만 작성

나머지는 아래 링크 참조

http://www.cplusplus.com/reference/unordered_map/unordered_map/

'개발 > C++' 카테고리의 다른 글

C++ 자료구조 - Queue  (0) 2020.06.23
C++ 자료구조 - Stack  (0) 2020.06.23
C++ 자료구조 - Deque  (0) 2020.06.21
C++ 자료구조 - Set  (0) 2020.06.21
C++ 자료구조 - Map  (0) 2020.06.21