set 이란
set은 원하는 key를 신속하게 찾고, 또 이 key가 정렬되기를 원할 때 사용한다(여기서 말하는 key라는 것은 저장할 자료를 말한다). map과 비슷하지만 다른 점은 amp은 key와 값을 한 쌍으로 저장하지만 set은 key만 저장한다. set도map과 같이 key를 중복으로 저장할 수 없다. 만약 key를 중복으로 사용하고 싶다면 multiset을 사용해야한다. set과 map과 같이 이진 탐색 트리 자료구조를 사용한다.
set을 사용할 때
앞서 이야기 했듯이 set은 자료를 저장할 때 내부에서 자동으로 정렬하고, map과 다르게 key만 저장한다.
set은 다음과 같은 조건일 때 사용하면 좋다.
1. 정렬해야한다.
2. key가 있는지 없는지를 알아야 할 때
3. 많은 자료를 저장하고, 검색 속도가 빨라야 할 때
set 사용 방법
set 컨테이너를 쓰려면 먼저 헤더 파일을 포함해야 한다.
#include <set>
보통 set을 사용하는 방법은 다음과 같다.
set<key 자료형> 변수 이름
set<int> set1;
set은 map과 기본적으로 오름차순으로 정렬을 한다.
내림차순으로 바꾸고 싶다면,
set<int, greater<int>> set1;
만약 key가 기본형이 아니고 Player 이라는 클래스를 사용하고 Player의 멤버중 HP를 비교하여 정렬하고 싶다면 아래와 같이 하면 된다.
<사용자 정의 클래스로 정렬할때>
가. set의 주요 멤버들
나. 추가
다. 반복자 사용
라. 검색
마. 삭제
바. set의 사용 예제 코드
출처 : Thinking About C++ STL 프로그래밍 (최홍배 지음)
'C++ > STL' 카테고리의 다른 글
8. 변경 가능 시퀀스 알고리즘(generate, copy, remove, replace) (0) | 2017.09.29 |
---|---|
7. 변경 불가 시퀀스 알고리즘(find, find_if, for_each) (0) | 2017.09.28 |
5. 맵(map) (0) | 2017.09.26 |
4. 해시 맵(hash_map) (0) | 2017.09.25 |
3. 덱(deque) (0) | 2017.09.22 |