언어/C++

[C++/STL] Set

미니소곰 2020. 4. 26. 18:23

SET

set은 순서를 가지고 중복없이 원소를 저장하는 컨테이너입니다.

(순서가 없으면 unordered_map이고, 중복이 가능하면 multiset입니다.)

 

set에서의 값으로 원소를 식별할 수 있습니다. 값이 키 그 자체입니다.

값은 중복되지 않습니다. 즉, unique합니다.

 

set에 들어간 원소는 수정할 수 없고, 삽입하거나 삭제하여 사용합니다.

 

set의 원소는 특정 기준에 따라서 정렬됩니다.

 

set은 키값으로 접근할 때 unordered_set에 비해 느립니다. 하지만 순서대로 순회할 수 있습니다.

 

set은 이진 탐색트리로 구현됩니다.

 

컨테이너 속성

연관 컨테이너

키를 사용해서 원소를 참조합니다. 절대적인 위치와 상관없이 키를 사용해 원소에 접근합니다.

 

순서

컨테이너의 원소는 특정한 순서를 가집니다.

 

집합

원소의 값은 원소를 식별하는데 사용되는 키입니다.

 

고유 키

원소의 키는 고유한 값을 가져, 중복되지 않습니다.

 

Allocator-aware

컨테이너는 요구에 맞게 원소를 동적으로 할당하고 해제 합니다.

 

멤버함수

생성자 set을 생성합니다.
파괴자 set을 파괴합니다.
=연산자 컨테이너의 content를 복사합니다.

 

Iterators

begin 첫번째 element를 가리키는 이터레이터를 반환한다.
end 마지막 element를 가리키는 이터레이터를 반환한다.
rbegin 마지막 element를 가리키는 역 이터레이터를 반환한다. 이터레이터를 증가시키면 역방향으로 그 다음 element를 가리킨다.
rend 첫번째 element를 가리키는 역 이터레이터를 반환한다.
cbegin 첫번째 element를 가리키는 const 이터레이터를 반환한다. 가리키는 객체의 값을 수정할 수 없다.
cend 마지막 element를 가리키는 const 이터레이터를 반환한다. 가리키는 객체의 값을 수정할 수 없다.
crbegin 마지막 element를 가리키는 const 역 이터레이터를 반환한다. 가리키는 객체의 값을 수정할 수 없다.
crend 첫번째 element를 가리키는 const 역 이터레이터를 반환한다. 가리키는 객체의 값을 수정할 수 없다.

 

Capacity

empty 컨테이너가 비어있는지 확인한다.
size set의 크기를 반환한다.
max_size set이 가질 수 있는 element의 최대 크기를 반환한다.

 

Modifiers

insert element를 삽입한다.
erase element를 제거한다.
swap 다른 set의 내용물과 자신의 내용물을 서로 바꾼다
clear 내부 element를 모두 제거한다.
emplace element를 생성 후 삽입한다.
emplace_hint element를 생성 후 힌트를 사용해 삽입합니다. 위치에 대한 힌트로 원소가 들어갈 위치가 예상되는 경우 사용하면 성능이 향상됩니다.

 

Observers

key_comp 비교 객체를 반환합니다.
value_comp 비교 객체를 반환합니다.

 

Operations

find 찾는 원소의 이터레이터를 반환합니다.
count 특정한 값의 갯수를 반환합니다. set의 경우 값이 유일하기 때문에 1이나 0만 반환합니다.
lower_bound 하한(같거나 큰)이 되는 이터레이터를 반환합니다. 1, 3, 5, 7, 9 에서 2을 하한으로 잡으면 3이 반환됩니다.
upper_bound 상한(큰)이 되는 이터레이터를 반환합니다. 1, 3, 5, 7, 9 에서 6을 상한으로 잡으면 7이 반환됩니다.
equal_range 그 값의 상한과 하한의 이터레이터를 모두 반환합니다. pair로 반환합니다.