1. 연관 컨테이너 종류로는 무잇이 있을까?
- '연관 컨테이너'로는 map, set, hash_map, hash_set 이 있다.
이것들은 key로 사용하는 값이 중복되지 않는 때 사용한다.
만약 중복되는 key를 사용할 때는 컨테이너의 앞에 'mulit'를 붙인 mulit_map, multi_set, hash_mulimap, hash_multiset 을 사용한다. key의 중복 혀용 여부만 다를 뿐 사용방법은 같다!
2. map, set과 hash_map, hash_set의 차이는?
- 가장 쉽게 알 수 있는 큰 차이는 이름 앞에 'hash'라는 단어가 있느냐 없느냐의 차이이다.
- map, set 컨테이너는 자료를 정렬하여 저장한다. 그래서 반복자로 저장된 데이터를 순회할 때 넣은 순서로 순회하지 않고 정렬된 순서대로 순회한다. 반면에 hash_map, hash_set은 정렬하지 않으며 자료를 저장한다. 또 hash라는 자료구조를 사용함으로 검색속도가 map, set에 비해 빠르다!
1. map, set을 사용하는 경우 :
정렬된 상태로 자료 저장을 하고 싶을 때!
2. hash_map, hash_set을 사용하는 경우 :
정렬이 필요 없으며 빠른 검색을 원할 때!
3. hash_map, hash_set은 표준은 아니다.
- map, set은 STL 표준 컨테이너지만 hash_map, hash_set은 표준이 아니다! 그래서 STL 관련 책을 보면 설명이 없는 경우가 있다. 따로 라이브러리를 설치할 필요가 없으며 C++ 컴파일러에서 대부분 지원한다.
- STL 표준도 아닌 hash_map을 설명하려는 이유는 대부분 C++ 컴파일러에서 지원하고, C++ 표준에서는 정식으로 STL에 들어갈 예정이며(현재는 표준으로 들어간 것 같다!) 현업에서 프로그래밍할 때 아주 유용하게 사용하는 컨테이너이기 때문이다.