[Basic C++] #29_Set, STL 컨테이너
C++ 개발에서 STL 컨테이너에 대해 알아보겠습니다.
C++가 제공하는 STL 컨테이너 중 Set과 MultiSet을 살펴보겠습니다.
#0. 개념
1. 개념
Set은 STL에서 제공하는 연관 컨테이너입니다. 여느 연관 컨테이너가 그러하듯 노드 기반 컨테이너이며, 균현 이진트리로 구현되어 있습니다. Set은 "Key" 값을 원소로 이루어진 집합입니다. "Key" 값은 중복이 허용되지 않으며, 자동으로 정렬됩니다. 기본 정렬 방식은 오름차순(a < b, Less)입니다. Set은 중위 순회(Left -> Root -> Right)를 통해 정렬된 Key 값들을 순차적으로 탐색합니다.
map 컨테이너와 달리, Set에서 "Key"값은 Key 값임과 동시에 Value 값을 의미합니다.
2. 생성
#include <set>
set<int> s;
set<int> s(Predicate);
set<int> s2(s1);
3. 반복자
#include <set>
set<int> s;
s.begin() or begin(s) : 첫 번째 원소를 가리키는 반복자 반환
s.end() or end(s) : 마지막 원소 다음의 위치를 가리키는 반복자 반환
rbegin(s) or rend(s) : 역 방향 반복자 반환
4. 삽입, 제거
#include <set>
s.clear() : 모든 원소를 제거
s.insert(k) : 새로운 원소 "K"를 삽입합니다. 성공 여부는 pair<iterator, bool>로 나옵니다.
s.insert(iter, k) : iter(반복자)가 가리키는 위치부터 K를 삽입할 위치를 탐색하여 K를 삽입합니다.
s.erase(iter) : iter가 가리키는 위치의 원소를 제거합니다.
s.erase(k) : 특정 Key 값을 갖는 원소를 제거합니다.
s.erase(start, end) : [start, end) 범위의 원소를 모두 제거합니다.
5. 탐색
#include <set>
s.find(K) : 원소 K를 가리키는 반복자를 반환합니다. K가 없다면, end(s)를 반환합니다.
s2.swap(s1) : s1과 s2를 swap합니다.
s.upper_bound(K) : K가 끝나는 구간의 반복자를 반환합니다.
s.lower_bound(K) : K가 시작하는 구간의 반복자를 반환합니다.
s.equal_range(K) : K의 lower_bound와 upper_bound를 "pair"로 반환합니다.
s.size() : 원소의 개수를 반환합니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #63_string (0) | 2023.04.03 |
---|---|
[Basic C++] #62_erase(), 주의할 점 (0) | 2023.04.02 |
[Basic C++] #22_참조형 변수 (0) | 2022.10.12 |
[Basic C++] #28_static 키워드, 링킹, namespace (0) | 2022.10.09 |
[Basic C++] #61_객체 풀, Obejct Pooling (0) | 2022.10.07 |