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

+ Recent posts