[C++] STL Container 개념 및 특징
STL(Standard Template Library) 란?
C++의 템플릿을 이용해 표준으로 정리된 라이브러리
STL의 구성 요소
1. 반복자 :STL 컨테이너에 저장된 원소들을 가리키는 포인터
2. 컨테이너 : 데이터를 저장하고 관리하기 위한 클래스 (vector, list, map, deque 등..)
3. 알고리즘 : STL에서 제공하는 함수 (ex. 정렬, 검색 등..)
컨테이너
컨테이너는 데이터를 저장하고 잘 관리하기 위한 클래스라고 생각하면 됩니다.
- 컨테이너의 종류
1. 순차 컨테이너 (시퀀스 컨테이너)
ex. vector(가변배열), list(연결리스트), deque(덱) 등..
임의의 위치에 삽입, 삭제가 가능합니다.
데이터를 순차적으로 저장합니다.
일반적인 자료구조와 동일한 형태
자료를 입력한 순서대로 저장하기 떄문에 저장, 검색, 알고리즘에 불리
=> 많지 않은 자료, 검색 속도 중요하지 않을 때 사용
2. 연관 컨테이너
ex. set, map, multiset, multimap 등
일정 규칙에 따라 자료를 조직화하여 저장
자료를 정렬/해시 등 이용해 저장하기 때문에 검색에 유리
=> 많은 양의 자료, 빠른 검색
3. 어댑터 컨테이너
ex. stack(LIFO), queue(FIFO)
데이터를 미리 정해진 방식에 따라 관리
순차 컨테이너를 변형시켜 스택 큐 우선순위 큐 형태로 저장
자료구조 개념 및 특징
array |
배열 |
장점 | 적은 양의 자료에 유리 |
단점 | 크기 변경 불가 |
vector |
가변배열 |
장점 | 적은 양의 자료에 유리, 크기 변경 가능, 순차 접근 가능, 랜덤 엑세스 가능 |
단점 | 중간삽입삭제, 검색느림, 많은 양의 자료 불리 |
queue |
FIFO(First In First Out) 선입선출 자료구조 (priority_queue : 우선순위 큐) |
deque |
덱(앞뒤로 넣고 빼는 큐) |
list |
양방향 연결리스트 |
장점 | 중간삽입/삭제 가능, 크기 변경 가능, 적은 양의 자료 유리, 순차 접근 가능 |
단점 | 많은 양의 자료에 불리, 랜덤 엑세스 불가, 검색 느림 |
forward_list |
단방향 연결리스트 |
장단점 list와 동일, 성능적으로는 forward_list가 가벼워 좋음 | |
stack |
LIFO(Last In First Out) 선입후출 자료구조 |
map |
이진탐색트리 기반, 자동정렬, key - value pair로 구성 |
장점 | 많은 양의 자료 유리, 검색 속도 빠름, key/value 따로 저장, 자동정렬 |
단점 | 적은 양엔 오버헤드로 인해 오히려 손해 |
set |
이진탐색트리 기반, 자동정렬, key만 저장 |
장점 | 많은 양의 자료에 유리, 검색 속도 빠름, key만 저장(key가 곧 value), 자동정렬 |
단점 | 적은 양엔 오버헤드로 인해 오히려 손해 |
unordered_map |
정렬되지 않은 map |
unordered_set |
정렬되지 않은 set |
'Language > C++' 카테고리의 다른 글
[BOJ][C++] 2839 설탕옮기기 (0) | 2018.12.12 |
---|---|
[C++][오류] 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. (0) | 2018.12.11 |
[C++] BOJ 컴파일 에러 이유와 해결방법 (0) | 2018.12.11 |
[BOJ][11720] 숫자의 합 (0) | 2018.12.10 |
[C++] call by value 와 call by reference 차이점 (0) | 2018.12.08 |
댓글