set
set의 내부 구조
연관 컨테이너 (associative container) 중 하나로, 노드 기반 컨테이너 이며 균형 이진 트리 로 구현되어 있다.
중복이 허용되지 않는 key라고 불리는 원소들의 집합이다.
원소 삽입 시 자동으로 정렬되며, 기본적으로 오름차순 정렬을 지원한다.
set을 순회할 때, 중위 순회 방식으로 순회를 진행한다.
set <데이터 타입> 이름;set <데이터 타입> 이름 (시작 반복자, 끝 반복자);set <int> s1;
...
set <int> s2 (s1.begin(), s2.begin()); //s2에는 s1의 모든 원소가 복사되어 저장된다.
set <데이터 타입> 이름 (배열이름 + 시작 인덱스값, 배열 이름 + 끝 인덱스값);set <데이터 타입> 이름 (복사할 set 이름);set <데이터 타입> 이름 = 복사한 set 이름;O(logN)O(logN)O(logN)unordered_set
unordered_set의 내부 구조
자동으로 정렬을 지원하지 않는 set이다.
O(1)O(1)O(1)set은 레드-블랙 트리 로 구현되어 있고, unordered_set은 해시 테이블 로 구현되어 있기 때문이다.
multiset
multiset의 내부 구조
key 값의 중복을 허용하는 set이다.
set에서 insert의 return 값은 삽입한 원소를 가리키는 반복자와 삽입 성공 / 실패 여부를 묶은 pair객체이지만, multiset에서 insert의 return 값은 삽입한 원소의 위치를 가리키는 반복자이다.