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

+ Recent posts