본문 바로가기
프로그래밍 언어/C++

[C++] [STL] Set

by 까망 하르방 2021. 7. 29.
반응형

Set

- 중복 없는 원소만을 가지는 집합 같은 것이다. (중복 허용 X)

- 헤더파일: #include <set>

- set에 들어가는 원소는 자동으로 정렬된다.

- set은 기본적으로 오름차순(less) 정렬이고 greater 조건자로 내림차순 정렬 가능

- 내부적으로 균형 이진탐색트리(Balanced Binary Search Tree)로 구현되어 있다.

- 중위 순회 구조

 

관련 함수

- insert(value): value 원소 추가

- insert(iter, value): iter가 가리키는 위치 부터 value 원소를 삽입할 위치 탐색하여 삽입

   insert 함수는 이미 존재하는 원소 삽입 시 아무일도 발생하지 않는다.

  → pair< set<int>::iterator, bool>  타입으로 return 받으면 

      second값을 통해 이미 존재하는 원소인지 확인할 수 있다.  

- begin(): 첫번째 iterator 반환

- end(): 마지막 iterator 반환

- erase(value): value 원소 제거

- erase(start, end): [start, end) 범위 원소 제거

- clear(): 모든 원소 제거

- find(value): value 에 해당하는 iterator 반환

                       없는 경우, end()와 같은 반복자 반환

- count(value): value 원소 개수를 반환 (0 또는 1)

- empty(): 비어있으면 true 아니면 false 반환

- size(): set에 존재하는 원소 개수

- upper_bound(k): k가 끝나는 구간의 반복자

- lower_bound(k): k가 시작하는 구간의 반복자

#include <iostream>
#include <set>

using namespace std;

int main() {
       set<int> s;
       s.insert(3); s.insert(6);
       s.insert(5); s.insert(1);
       s.insert(2); s.insert(4);
       s.insert(8); s.insert(7);
       
       s.erase(7);
       if (!s.empty())
       {
              cout << "set Size = " << s.size() << '\n';
       }
              
       cout << *s.find(8) << '\n';
       for (auto it = s.begin(); it != s.end(); it++)
       {
              cout << *it << ' ';
       }
       cout << endl;
}

 

Reference

- 중복된 원소를 갖고자 한다면 multiset을 사용하여야 한다.

 

[C++] [STL] multiset

multiset set이 중복되지 않는 원소를 저장한다면 multiset은 중복 원소를 저장할 수 있다. 기본적인 내장 함수는 Set을 참고해도 좋다. [C++] [STL] Set Set - 중복 없는 원소만을 가지는 집합 같은 것이다. (

zoosso.tistory.com

- vector에서는 erase와 unique 함수를 통해 set 효과를 가질 수 있다.

  [STL] unique 함수 활용한 vector 중복 원소 제거

 

[STL] unique 함수 활용한 vector 중복 원소 제거

unique 함수란? - 헤더파일: #include - vector 배열에서 원소를 중복없이 앞쪽에 채워주는 함수이다. - 기존 크기는 변화가 없기 때문에 앞쪽에 채워지고 남은 뒷공간에 원소들이 그대로 존재한다. ex.

zoosso.tistory.com

반응형

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

[C++] [STL] Deque  (0) 2021.07.30
[C++] [STL] multiset  (0) 2021.07.30
[STL] unique 함수 활용한 vector 중복 원소 제거  (0) 2021.07.29
[C++] [STL] Vector 사용 방법  (0) 2021.07.26
[C++] protected 생성자(Constructor)란?  (2) 2021.07.04

댓글