STL
STL 이란?
Standard Template Library의 약자로 C++ 프로그래밍 언어의 표준 라이브러리
프로그래밍에 필요한 자료구조와 알고리즘을 템플릿 형태로 제공
주요 구성 요소
컨테이너
반복자(Iterator)
- 컨테이너 요소에 접근하고 순회하는데 사용되는 객체
- 포인터와 유사하게 동작하며, 컨테이너의 요소를 가리키고 이동할 수 있음
알고리즘
- 컨테이너 요소들을 처리하는 함수 템플릿
- 정렬, 검색, 변환 등 다양한 작업 수행 가능하다
장점
다양한 데이터 타입에 대한 동일한 알고리즘 적용 가능
컴파일 타임 메커니즘 사용하므로 실행 시 효율 좋음
표준화되어 이식성과 확장성에 우수
Set
Set 이란?
고유 키 값을 저장하고 자동으로 정렬해주는 자료구조
기본 특성
- 유일성 : 중복된 원소를 허용하지 않아 같은 값을 여러 번 삽입이 불가
- 정렬 : 원소들은 자동으로 오름차순으로 정렬되어 범위 기반 연산에 효율적임
- 불변성 : 저장된 원소 값은 직접 수정이 불가능 하며, 수정하려면 기존 원소를 삭제 후 새 원소를 삽입해야함
- 레드-블랙 트리 : 내부적으로 자가 균형 이진 탐색인 레드-블랙 트리로 구현되어있음
- 시간 복잡도 : 균형 이진 트리로 구현되어 있어 삽입, 삭제, 검색 연산의 시간 복잡도가 O(logN)
주요 맴버 함수
- 삽입 및 삭제
- insert() : 원소를 삽입
- erase() : 특정 원소나 범위의 원소를 삭제
- clear() : 모든 원소 삭제
- 검색 및 접근
- find() : 특정 원소를 찾아 그 위치의 반복자 반환
- count() : 특정 원소의 개수를 반환(Set에선 항상 0 또는 1)
- lower_bound() : 지정된 키 이상의 첫 원소의 반복자 반환
- upper_bound() : 지정된 키보다 큰 첫 원소의 반복자 반환
- 크기 및 용량
- size() : Set의 원소의 개수를 반환
- empty() : Set이 비어있는지 확인
- max_size() : Set이 담을 수 있는 최대 원소 개수 반환
활용
- 중복 제거 : 데이터에서 중복을 제거할 때 유용
- 정렬된 고유 값 관리 : 정렬된 상태의 고유 값들을 유지할 때 사용
- 범위 검색 : 특정 범위의 값을 빠르게 찾을 때 효과적