프로그래밍 언어/C C++

C++ set 자료형 사용법

트리맨스 2021. 6. 13. 23:04
반응형

 

백준 1525 (https://www.acmicpc.net/problem/1525) 문제를 풀다가 현재 내가 아는 자료형으로 풀기 힘들다는 생각이 들어서 구글링을 하다가 set 이라는 자료형을 찾아냈다. 중복되지 않는 무언가를 저장할 때 매우 유용해 보인다. set 자료형에 대해서 간단히 알아보자.

 

 

set 기본 개념


set은 노드 기반 컨테이너이다. 원소들은 중복이 허용되지 않으며, 원소 삽입 시 원소는 자동으로 정렬이 된다. 기본 정렬 기준은 오름차순이다.

 

 

set 선언


1. 기본 선언 하기 -> set<T> s;

 

2. 정렬 기준 세우기 -> set<T, pred> s; 

pred는 정렬 기준을 바꾸기 위한 구조체이다. 기본은 less, 내림차순으로 바꾸고 싶으면 greater로 바꾸면 된다. 그 이외의 정렬 기준을 세우고 싶다면 정렬 구조체를 하나 임의로 지정해 주자.

1
2
3
4
5
struct pred{
    bool operator() (매개변수 1, 매개변수 2const {
        return 매개변수 1 < 매개변수 2;
    }
}
cs

기본 제공되는 것 사용하기

set<T, less<T>> s;

set<T, greater<T>> s;

 

3. 기존 set 복사 -> set<T> s1(s2);

4. 기존 vector 복사 (vector<T> v) -> set<T> s(v.begin(), v.end());

 

 

set 함수


begin() : 맨 첫번째 원소의 iterator 반환

end() : 맨 마지막 원소의 iterator 반환 (정확히는 마지막 원소의 다음)

rbegin(), rend() : 위의 것들과 반대로 작동함, 반대로 출력하고 싶을때 사용

clear() : 모든 원소 제거

count(k) : 원소 k의 개수 반환 (set 자료형은 중복되는 값이 없기 때문에 0과 1밖에 없다. multiset에서 주로 사용)

insert(k) : 원소 k를 삽입, 자동으로 정렬된 위치에 삽입된다. 성패 여부는 리턴값 pair<iteraor, bool> 로 반환됨.

erase(k) : k 삭제

find(k) : k 찾기, k를 가리키는 iterator 반환, 없을 시 s.end() 반환 

size() : 원소 갯수 반환

 

 

반응형

'프로그래밍 언어 > C C++' 카테고리의 다른 글

C++ list 자료형 사용법  (0) 2021.06.21
C++ map 자료형 사용법  (0) 2021.06.19
C언어의 static 변수  (2) 2021.06.08
size_t 는 무엇일까?  (0) 2021.05.28
C언어 메모리 누수 확인하기  (0) 2021.05.19