728x90
set 은 노드 기반 컨테이너로, 이진 균형 트리다. 때문에 삽입, 삭제, 검색 등의 작업이 용이하다.
숫자든 문자든 원소의 중복을 알아서 없애준다는 이점이 있어 사용법을 익혀두면 좋다.
원소는 insert 멤버 함수로 삽입되면 자동으로 정렬(오름차순)된다.
set 헤더( #include <set> )에 들어있고, vector랑 겹치는 멤버함수들이 있어 vector 공부 후 보니 좀 더 편한 것 같다.
Set 초기화
set<자료형> 변수명 | 기본 선언 |
set<자료형> 변수명(복사할 변수) | 선언 후 복사한 값으로 초기화 |
set<자료형> 변수명 = 복사할 변수 | 선언 후 복사한 값으로 초기화 |
set<자료형> 변수명(복사할 변수.begin(), 복사할 변수.end()) | 선언 후 복사한 값으로 초기화 |
Set 반복자(iterator)
s.begin() / s.end() | set의 시작/마지막 원소(key)의 주소값 반환 (마지막은 정확히 원소 뒤 공백구간의 주소값) |
s.rbegin() / s.rend() | set의 마지막/시작 원소의 주소값 반환. 역으로 출력하고 싶을 때 주로 사용 |
s.cbegin() / s.cend() | begin()/end() 와 동일하나 const로 반환 |
s.crbegin() / s.crend() | rbegin()/rend() 와 동일하나 const로 반환 |
Set 삽입, 삭제(modifier)
s.insert() | 값 삽입. 삽입 성공/삭제 여부는 pair<iterator, bool>으로 반환. 각각 pair.first, pair.second로 꺼낼 수 있음. |
s.erase() | 값 삭제. 범위나 반복자를 넣을 수도 있음. |
s.swap() | 다른 set과 서로 교환 |
s.clear() | s의 원소 전부 삭제 |
s.emplace() | move()로 객체 저장. pair<iterator, bool>으로 반환. |
s.emplace_hint() | 삽입될 위치에 대한 힌트 토대로 삽입 |
Set 기능(operation)
s.find(k) | k가 가리키는 반복자 반환. k가 없으면 s.end()와 같은 반복자 반환. |
s.size() | 원소 개수 반환 |
s.upper_bound(k) / s.lower_bound(k) | 원소 k가 시작하는/끝나는 구간의 반복자 반환 |
s.equal_range(k) | 원소 k가 시작하는 구간과 끝나는 구간의 반복자 pair 객체를 반환. (upper_bound와 lower_bound가 합쳐진 것) |
s.empty() | 비어있으면 true, 아니면 false |
참고 블로그 : https://hwan-shell.tistory.com/130, https://blockdmask.tistory.com/79
'[C_C++]이론 공부 > 이론+STL' 카테고리의 다른 글
[C++ STL] vector(벡터) 공부 (0) | 2021.06.14 |
---|---|
[C++] 클래스(class) 기본 (0) | 2021.06.01 |
OOP(객체지향 프로그래밍)의 주요특징 (0) | 2021.05.21 |
[C++] 데이터 타입(자료형) (0) | 2021.05.20 |
[C++] 메모리 영역 (메모리 구조), 정적할당과 동적할당 (0) | 2021.05.20 |