반응형
728x170
set를 알아보자
set란
Sets are containers that store unique elements following a specific order.
++기본적으로는 오름차순으로 정렬된다.
집합과 같다.
같은 원소는 존재하지 않고 정렬되어있는 컨테이너를 말한다.
정렬되어있고 유일성을 가져서
중복제거에 많이 쓰이고는 한다.
**만약 중복원소를 가지고 싶다면 Multiset을 이용할 수 있다.
주요 함수로는
- set<T>: 원하는 자료형 및 클래스 T를 통해 생성
iterator(반복자)
- begin(): beginning iterator를 반환
- end(): end iterator를 반환
Insert & Update & Delete
- insert(element): 세트에 element를 추가
- erase(element): 세트에서 해당하는 element를 삭제
- clear(): 세트에 있는 모든 원소 삭제
Read
- find(element): element에 해당하는 iterator를 반환
- count(element): 해당 element가 있으면 1 아니면 0 반환.
나머지
- empty(): 비어있으면 true 아니면 false를 반환
- size(): 세트에 포함되어 있는 원소들의 수를 반환
예시
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main(){
// set
set<string> s;
// insert(element)
s.insert("abc");
s.insert("def");
s.insert("ghi");
s.insert("jkl");
// erase(element)
s.erase("jkl");
// empty(), size()
if(!s.empty()) cout << "s size: " << s.size() << '\n';
// find(element)
cout << *s.find("abc") << '\n';
cout << *s.find("def") << '\n';
// count(element)
cout << "abc count: " << s.count("abc") << '\n';
// begin(), end()
cout << "traverse" << '\n';
for(auto it = s.begin(); it != s.end(); it++){
cout << "value: " << *it << '\n';
}
return 0;
}
딱히 다른 특별한 예는 없다.
다시 말하자면
set을 왜 쓸까???
이진탐색트리 기반이라 검색이 아주 빠르고
자동 정렬이 된다.
데이터 삽입과 동시에 정렬이 일어나므로 좋다
다시 말하자면
- 삽입과 동시에 정렬해야 할때
- key가 있는지 없는지 알아야 할때
- 빠른 검색으로 존재 여부를 신속하게 알고 싶을때
set을 쓰면 되겠다.
728x90
반응형
그리드형
'문제풀이(Problem Solving) > C++ 문제풀이에 유용한 것들' 카테고리의 다른 글
이진탐색, Binary Search (0) | 2021.06.18 |
---|---|
STL 우선순위 큐, Priority Queue 사용법 [C++] (0) | 2021.06.13 |
STL 맵, map 사용법 [C++] (0) | 2021.06.12 |
STL 리스트, list 사용법 [C++] (0) | 2021.06.12 |
array와 container들을 초기화시키는 여러가지 방법 (0) | 2021.06.12 |