Set
Set에 대해서 공부를 하여보니 이전에 포스팅했었던 Map과 거의 유사합니다.
다른 점이 있다면 Map은 key와 value의 pair를 데이터로 저장하고, Set은 key만을 데이터로 저장합니다.
Map에 대해서 완벽하게 이해하셨다면 Set은 한번 읽어보면 쉽게 넘어갈 수 있을 것 입니다.
1) Set의 정의
Set은 key라고 불리는 원소들의 집합으로 이루어진 트리입니다. (key의 중복을 허용하지 않습니다.)
Set은 데이터를 저장할 때 key를 기준으로 정렬하며 오름차순으로 정렬합니다.
Set의 내부 구현은 검색, 삽입, 삭제가 O(logn)인 레드블랙트리로 구성되어 있습니다.
2) Set의 사용
Set을 사용하기 위해서는 다음의 과정을 거쳐 사용하면 됩니다.
1. 헤더파일 추가 : #include <set>
2. using namespace std; (편의상)
3. set <[key의 data type]> [변수 이름]
ex) set<int> s; -> key를 기준으로 오름차순 정렬
3) Set의 함수
s.insert(k) : set에 원소 k를 삽입합니다.
s.erase(2) : index 2에 있는 데이터를 삭제합니다.
s.erase(k) : k를 원소로 가지고 있는 데이터를 삭제합니다.
s.clear() : set내에 있는 모든 데이터 쌍을 삭제합니다. ( = s.erase(s.begin(), s.end()) )
s.size() : set내에 있는 데이터 쌍의 갯수를 반환합니다.
마찬가지로 iterator와 관련된 함수들은 제외를 하겠습니다. (s.erase가 iterator와 관련되어있긴 하다)
Vector Map 에 이어서 Set이라는 3번째 포스팅을 하면서 느낀점은 내용이 비슷비슷하다는 것 입니다.
정의만 조금씩 다를 뿐 사용하는 방법, 함수는 모두 비슷합니다.
찾아보니 set, multiset, map, multimap들을 연관 컨테이너(associative container)라고 합니다.
공통점은 노드 기반, 레드블랙트리 기반이라는 것이고, 함수나 생성자가 거의 유사합니다.
iterator를 모르는 채로 공부를 하니깐 겉핥기를 하는 느낌인데 다음에는 꼭 iterator에 대해 포스팅하겠습니다.
'C++' 카테고리의 다른 글
C++ STL next_permutation (0) | 2022.03.24 |
---|---|
C++ STL lower_bound, upper_bound (0) | 2022.03.23 |
C++ STL Iterator (0) | 2022.03.23 |
C++ STL Map (0) | 2022.03.22 |
C++ STL Vector (0) | 2022.03.21 |