[C++ STL] Set

Kim Sung Kyu·2021년 4월 17일
0

C++🚁

목록 보기
7/8
post-thumbnail

SET

  • 연관 컨테이너(associative container)
  • 노드 기반 컨테이너이며 내부적으로 균형 이진트리로 구현됨
  • Key라 불리는 원소들의 집합
  • key값은 중복이 허용 안됨
  • 원소 삽입시 자동으로 정렬 됨
  • 정렬은 less(오름차순)가 Default

1. 생성

  • 헤더 파일
    #include <set>

  • 생성
    set<자료형> 변수명
    set<자료형> 변수명(정렬 기준)
    set<자료형> 변수명(변수명)

ex) set<int> s;


2. 멤버 함수

종류상세설명
begin()시작 지점의 주소값 반환
end()끝 지점 주소값 반환
rbegin()끝 지점을 시작 지점으로 반환
rend()시작 지점을 끝 지점으로 반환
clear()모든 원소를 제거
count(k)원소 갯수 반환
empty()비었을 경우 True, 아닐 경우 False 반환
insert(n)원소를 삽입(삽입시 자동 정렬된 위치에 삽입)
insert(iter, n)iter의 위치부터 원소를 삽입할 위치를 탐색하여 삽입
erase(iter)iter가 가리키는 원소 제거(제거한 원소 다음 원소의 반복자 리턴)
erase(start, end)[start, end) 범위의 원소를 모두 제거
find(k)원소 k를 가리키는 반복자 반환 (없으면 s.end() 반환
s2.swap(s1)s1과 s2를 바꿈
upper_bound(k)원소 k가 끝나는 구간의 반복자
lower_bound(k)원소 k가 시작하는 구간의 반복자
equal_range(k)upper_bound(k), lower_bound(k)가 합쳐진 멤버함수
key_comp();정렬 기준 조건자 반환
size()사이즈 반환
max_size()최대 사이즈(남은 메모리 크기) 반환

  • 삽입시 성공 실패에 대한 여부는 리턴값 pair<iterator, bool>)으로 나옴
  • pair<iterator, bool>에서 pair.first는 삽입한 원소를 가리키는 반복자
  • pair.second는 성공(true), 실패(false)를 나타냄

3. 예시

#include <iostream>
#include <set>
using namespace std;

void main() {
	set<int> s;

	s.insert(1);
	s.insert(2);
	s.insert(5);
	s.insert(6);
	s.insert(3);
	s.insert(4);

	set<int>::iterator iter;
	for (iter = s.begin(); iter != s.end(); iter++) {
		cout << *iter << endl; // 1 2 3 4 5 6
	}

	iter = s.find(2);

	if (iter != s.end()) {
		cout << *iter << endl; // 2
	}

	set<int> s2;
	s2.swap(s);
	s2.erase(4);

	for (iter = s2.begin(); iter != s2.end(); iter++) {
		cout << *iter << endl; // 1 2 3 5 6
	}
}

참고

profile
꿈꾸던 내가 될꺼야😃

0개의 댓글