C++ STL 컨테이너 알고리즘 함수 반복자 (Standard Template Library)
STL은 크게 3가지로 분류됩니다.
- 컨테이너 Container : 체계화된 방법으로 데이터를 저장하는 공간 (방법).
- 알고리즘 Algorithm : 컨테이너에 담긴 데이터를 처리하는 방법 (절차).
- 반복자 Iterator : 포인터 개념. 알고리즘에서 컨테이너 데이터를 가리킴.
■ STL 컨테이너
순차 컨테이너 Sequence Container
- 순차적으로 시각화할 수 있는 데이터 (원소) 집합
컨테이너 |
특징 |
장단점 |
Array |
고정 크기 |
빠른 임의 접근 (인덱스 번호 이용) |
도중 삽입, 삭제 느림 |
||
실행 중 크기 바꿀 수 없음 |
||
Vector |
위치 변경, 확장 배열 |
빠른 임의 접근 (인덱스 번호 이용) |
도중 삽입, 삭제 느림 |
||
끝에서 빠른 삽입, 삭제 가능 |
||
List |
이중 연결 목록 |
임의 위치에 빠른 삽입, 삭제 가능 |
양 끝에서 빠르게 접근 가능 |
||
임의 접근 속도 느림 |
||
Deque | 벡터와 비슷 | 빠른 임의 접근 (인덱스 번호 이용) |
도중 삽입, 삭제가 느림 | ||
시작 및 끝 위치에서 빠르게 삽입, 삭제(푸시, 팝) 가능 |
[C++ 프로그래밍 팁]
연관 컨테이너 Associate Container
- 키를 사용하여 데이터 접근
컨테이너 |
특징 |
장단점 |
Map |
키, 데이터 연계 |
빠른 임의 접근 (인덱스 번호 이용) |
값 하나에 한 키만 허용 |
키가 균등하게 분포되지 않을 경우 비능률적 |
|
Multi Map |
키, 데이터 연계 |
빠른 임의 접근 (인덱스 번호 이용) |
여러 키 값 허용 |
키가 균등하게 분포되지 않을 경우 비능률적 |
|
Set |
키만 저장 |
빠른 임의 접근 (인덱스 번호 이용) |
값 하나에 한 키만 허용 |
키가 균등하게 분포되지 않을 경우 비능률적 |
|
Multi Set |
키만 저장 |
빠른 임의 접근 (인덱스 번호 이용) |
여러 키 값 허용 |
키가 균등하게 분포되지 않을 경우 비능률적 |
[C++ 프로그래밍 팁]
■ STL 구성 함수 Function
- 주요 함수는 아래와 같습니다. 컨테이너 다루게 되면 가장 많이 사용하게 될 함수입니다.
size() |
컨테이너 항목 수를 리턴 |
empty() |
컨테이너가 비어 있으면 TRUE 리턴 |
max_size() |
가장 큰 컨테이너의 크기 리턴 |
begin() |
컨테이너의 시작 위치에 대한 반복자 리턴 |
end() |
컨테이너의 끝 다음 위치에 대한 반복자를 리턴 |
rbegin() |
컨테이너의 끝에 대한 역 반복자를 리턴 |
rend() |
시작 위치에 대한 역 반복자를 리턴, 역방향 반복을 끝내기 위해 사용 |
전체 함수는 아래 cplusplus.com 사이트를 참조하세요.
[C++ 프로그래밍 팁]
■ STL 알고리즘 Algorithm
- 컨테이너 데이터를 활용해 무언가를 할 때 사용하는 함수
- STL 알고리즘 = 독립형 템플릿 함수
알고리즘 |
설명 |
find |
지정된 값과 같은 첫 번째 원소 리턴 |
count |
지정된 값을 가진 원소 수 리턴 |
equal |
두 컨테이너의 내용을 비교, 모든 원소들이 같으면 TRUE 리턴 |
search |
다른 컨테이너에서 해당 값의 순서를 찾음 |
copy |
컨테이너에 해당 값, 해당 위치에 데이터 복사 붙여넣기 |
swap |
한 위치의 값을 또 다른 위치의 값과 교환 |
iter_swap |
한 위치의 값 순서를 다른 위치의 값 순서와 교환 |
fill |
값을 위치의 순서에 복사 |
sort |
데이터를 지정된 순서에 따라 정렬 |
merge | 정렬된 두 원소의 범위를 결합 |
accumulate | 특정 범위 원소들의 합계를 리턴 |
for_each | 각 원소에 대해 지정된 함수를 실행 |
[C++ 프로그래밍 팁]
■ STL 반복자 Iterator
- 컨테이너 데이터 항목(원소)에 접근하기 위해 사용하는 엔티티. 포인터 개념
- 원소를 순차적으로 조회하는 데 사용
- 3대 반복자
- 정방향
- 양방향
- 임의 접근
- 전문화 반복자
- 입력 반복자
- 출력 반복자
반복자 |
읽기/쓰기 |
저장 |
방향 |
접근 |
임의 접근 |
읽기 쓰기 |
가능 |
정방향 역방향 |
임의 |
양방향 |
읽기 쓰기 |
가능 |
정방향 역방향 |
선형 |
정방향 |
읽기 쓰기 |
가능 |
정방향만 |
선형 |
출력 |
쓰기 전용 |
불가능 |
정방향만 |
선형 |
입력 | 읽기 전용 | 불가능 | 정방향만 | 선형 |
C++ STL 컨테이너 알고리즘 함수 반복자 (Standard Template Library)