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을 사용하여야 한다.
[C++] [STL] multiset
multiset set이 중복되지 않는 원소를 저장한다면 multiset은 중복 원소를 저장할 수 있다. 기본적인 내장 함수는 Set을 참고해도 좋다. [C++] [STL] Set Set - 중복 없는 원소만을 가지는 집합 같은 것이다. (
zoosso.tistory.com
- vector에서는 erase와 unique 함수를 통해 set 효과를 가질 수 있다.
[STL] unique 함수 활용한 vector 중복 원소 제거
[STL] unique 함수 활용한 vector 중복 원소 제거
unique 함수란? - 헤더파일: #include - vector 배열에서 원소를 중복없이 앞쪽에 채워주는 함수이다. - 기존 크기는 변화가 없기 때문에 앞쪽에 채워지고 남은 뒷공간에 원소들이 그대로 존재한다. ex.
zoosso.tistory.com
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] [STL] Deque (0) | 2021.07.30 |
---|---|
[C++] [STL] multiset (0) | 2021.07.30 |
[STL] unique 함수 활용한 vector 중복 원소 제거 (0) | 2021.07.29 |
[C++] protected 생성자(Constructor)란? (2) | 2021.07.04 |
[C++] 상속 관계에서 생성자 호출순서와 명시적 호출이란? (2) | 2021.07.04 |
댓글