STL
- C++ 표준 템플릿 라이브러리 (Standard Template Library)
- 프로그램에 필요한 자료구조와 알고리즘을 Template으로 제공
1. 장단점
장점 | 단점 |
---|
일반화 지원 | 템플릿 기반이므로 코드가 비대해짐 |
실행시 효율 저하 거의 없음 | 가독성이 떨어짐 |
표준이므로 이식성 뛰어남 | |
확장 가능 | |
2. 구조
iterator(반복자)
- STL 전용 포인터, 가리키는 원소에 접근하여 다음 원소를 가리킴
Algorithm(알고리즘)
- 정렬, 삭제, 검색, 연산 등 간단하게 호출하여 사용하게 구성되어 있음
Allocator(할당기)
- 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체
- 모든 컨테이너는 자신만의 할당 크기를 가지고 있음
Function Object(함수 객체)
- 함수처럼 동작하는 객체
- operator() 연산자를 오버로딩
Adaptor(어댑터)
- 구성 요소의 인터페이스를 변경하여 새로운 인터페이스를 갖는 구성 요소로 변경
- 어댑터 컨테이너
3. 종류
시퀸스 컨테이너(Sequence Container)
- 자료를 입력한 순서대로 저장
- 검색 및 삽입, 삭제 속도가 느림
- 많지 않은 양의 자료 / 검색 속도가 중요하지 않으면 사용.
- 종류 : array (C++ 11), vector, list, deque
연관 컨테이너(Associative Container)
- 트리 구조
- 검색 및 삽입, 삭제 속도가 빠름
- 많은 양의 자료 / 빠른 검색이 중요한 경우 사용
- 종류 : set, multiset, map, multimap
어댑터 컨테이너(Adaptor Container)
- 시퀸스 컨테이너를 변형하여 사용
- 종류 : stack, queue, priority_queue
4. 상황별 컨테이너 선택
1. 적은양의 데이터
- array
- vector
- list / forward_list
2. 많은양의 데이터 + 검색 활발
참고
https://code-algalon.tistory.com/188
https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%ED%85%9C%ED%94%8C%EB%A6%BF_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC