문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들

set으로 중복없애고 자동 정렬하기

게임이 더 좋아 2021. 6. 7. 17:24
반응형
728x170

set이용하기

#include<set> 을 해야한다.

 

이진트리로 구현되어있음

**원소가 오름차순 또는 내림차순으로 정렬되어 저장된다는 점

 

내가 가지고 있는 vector vec을 set으로 만드려면 저렇게 선언하면 된다.

    //set은 중복을 제거하면서 sort도 함
    set<int> s(vec.begin(), vec.end());

배열은 아래와 같이

set<int> s(arr, arr+ 100);

 

일반적으로는 이렇다.

set<자료형> 변수

set<자료형> 변수(복사할 변수)

set<자료형> 변수 = 복사할 변수

 

*** 하지만 set은 iterator가 bidirentional 이므로

원래 우리가 알던 연산이 안되는 경우가 있다 참고하자.

 

기본적으로 아래와 같이 iterator를 반환한다.

s.begin() : set의 시작이 되는 주소 값 반환

s.end() : set의 마지막 부분에 대한 주소 값 반환(정확히 마지막 뒤 공백구간)

s.rbegin() : set의 마지막 부분을 시작점으로 지정

s.rend() : set의 첫번 째 부분을 마지막점으로 지정

 

또한 삽입 삭제가 가능하다.

(삽입 삭제가 되어도 정렬상태 유지)

s. insert(value)

s. erase(value)

 

다른 함수로는

s. emty() : 비어있는지 확인

s. find(value) : 해당 value가 원소로 있는지 찾아주고, 해당 value의 iterator 반환

s. count(value) : 해당 value가 몇개 있는지 count 해서 반환

s.size() : s에 저장되어 있는 크기

S.lower_bound(value): value 이상인 가장 작은 값

S.upper_bound(value) : value초과인 가장 작은 값

 

728x90
반응형
그리드형