Set
- 중복 없는 원소만을 가지는 집합 같은 것이다. (중복 허용 X)
- 헤더파일: #include <set>
- set에 들어가는 원소는 자동으로 정렬된다.
- set은 기본적으로 오름차순(less) 정렬이고 greater 조건자로 내림차순 정렬 가능
- 내부적으로 균형 이진탐색트리(Balanced Binary Search Tree)로 구현되어 있다.
- 중위 순회 구조
관련 함수
- insert(value): value 원소 추가
- insert(iter, value): iter가 가리키는 위치 부터 value 원소를 삽입할 위치 탐색하여 삽입
→ insert 함수는 이미 존재하는 원소 삽입 시 아무일도 발생하지 않는다.
→ pair< set<int>::iterator, bool> 타입으로 return 받으면
second값을 통해 이미 존재하는 원소인지 확인할 수 있다.
- begin(): 첫번째 iterator 반환
- end(): 마지막 iterator 반환
- erase(value): value 원소 제거
- erase(start, end): [start, end) 범위 원소 제거
- clear(): 모든 원소 제거
- find(value): value 에 해당하는 iterator 반환
없는 경우, end()와 같은 반복자 반환
- count(value): value 원소 개수를 반환 (0 또는 1)
- empty(): 비어있으면 true 아니면 false 반환
- size(): set에 존재하는 원소 개수
- upper_bound(k): k가 끝나는 구간의 반복자
- lower_bound(k): k가 시작하는 구간의 반복자
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s;
s.insert(3); s.insert(6);
s.insert(5); s.insert(1);
s.insert(2); s.insert(4);
s.insert(8); s.insert(7);
s.erase(7);
if (!s.empty())
{
cout << "set Size = " << s.size() << '\n';
}
cout << *s.find(8) << '\n';
for (auto it = s.begin(); it != s.end(); it++)
{
cout << *it << ' ';
}
cout << endl;
}
Reference
- 중복된 원소를 갖고자 한다면 multiset을 사용하여야 한다.
- vector에서는 erase와 unique 함수를 통해 set 효과를 가질 수 있다.
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] [STL] Deque (0) | 2021.07.30 |
---|---|
[C++] [STL] multiset (0) | 2021.07.30 |
[STL] unique 함수 활용한 vector 중복 원소 제거 (0) | 2021.07.29 |
[C++] [STL] Vector 사용 방법 (0) | 2021.07.26 |
[C++] protected 생성자(Constructor)란? (2) | 2021.07.04 |
댓글