[C_C++]이론 공부/이론+STL

[C++ STL] set 사용법 위주 공부

코딩굼벵이 2021. 6. 29. 21:34
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++] set container 정리 및 사용법

안녕하세요. BlockDMask 입니다 ! 오늘은 연관 컨테이너 set, multiset, map, multimap 중 set에 대해 학습해보겠습니다. 순서는 set container -> set의 사용법 -> set의 생성자와 연산자 -> set의 멤버 함수 -..

blockdmask.tistory.com

 

 

C++ set 사용법과 설명...

set에 대해 설명하고자 합니다. 사용법도요. 아마 set을 사용하려고 검색하셔서 오시게 된 분이시라면, set의 특징을 잘 아시는 분일겁니다. 네, set의 특징은 다음과 같습니다. 1. 숫자든 문자든 중

hwan-shell.tistory.com