unordered_map
unordered_map은 C++11에 추가된 연관 컨테이너다. 그러나 C++11이전에 있었다. 'hash_map'과 거의 같은 컨테이너이기 때문에 새로운 기능이라고 말하기는 좀 애매하다. hash_map은 표준 컨테이너는 아니지만, 대부분의 C++컴파일러에서 지원하는 컨테이너이고 C++11에서 unordered_map으로 표준화되었다고 봐도 무방하지 않을까 생각한다.
unordered_map은 hash_map과 비슷한 자료구조고 사용 방법도 거의 같으므로 여기서는 간단하게 중요 기능을 위주로 알아본다.
unordered_map 사용하기
컨테이너 이름과 같은 'unordered_map'라는 헤더 파일을 포함한다.
#include <unordered_map>
<unordered_map 기본사용 예제>
데이터 추가와 삭제
검색
lower_bound, upper_bound는 gcc에서는 존재하지 않는걸로 보인다......
검색 - 없으면 추가하기
emplace_hint를 사용하여 검색할 때 찾는 것이 있으면 해당 요소가 있는 위치의 반복자를 반환하고, 만약 없다면 새로운 값을 추가한 후 추가한 위치의 반복자를 반환한다. 추가할 떄는 이름 앞에 Placement Insert방식으로 'emplace_'을 붙인다.
<emplace_hint 를 사용한 검색 예제>
클래스(혹은 구조체)를 key로 사용하기
연과 컨테이너의 key는 보통 기본 자료형이나 문자열을 사용하는데, 좀더 복잡한 데이터를 key로 사용하고 싶을 때는 key타입을 구조체로 정의하고 전용 해시 함수를 정의한다.
<클래스(혹은 구조체)를 Key로 사용 예제>
출처 : Thinking About C++ STL 프로그래밍 (최홍배 지음)
'C++ > STL' 카테고리의 다른 글
각 STL 컨테이너를 써야할 때를 정리(차이점) (0) | 2017.10.26 |
---|---|
19. chrono (0) | 2017.10.25 |
17. forward_list (0) | 2017.10.23 |
16. array (0) | 2017.10.20 |
15. 튜플(tuple) (0) | 2017.10.19 |