[STL 프로그래밍 개념]
STL이란?
- Standard Template Library의 약자로, 프로그램에 필요한 자료구조와 알고리즘을 템플릿으로 제공하는 라이브러리.
STL 구성 요소
- 컨테이너(Container) : 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 한다.
- 반복자 : 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다른 원소를 가리키게 한다.
- 알고리즘 : 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿.
- 함수 객체 : 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체
- 어댑터 : 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경
- 할당기 : 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체
컨테이너(Container)
- 표준 시퀀스 컨테이너(Standard sequence container) : 컨테이너 원소가 자신만의 삽입 위치(순서)를 가지는 컨테이너 _ vector, deque 등
- 표준 연관 컨테이너(Standard associative container) : 저장 원소가 삽입 순서와 다르게 특정 정렬 기준에 의해 자동 정렬되는 컨테이너 _ set, map 등
# string 컨테이너 : 시퀀스 컨테이너의 일종이지만, 문자열만을 저장
- 배열 기반 컨테이너(array-based container) : 데이터 여러 개가 하나의 메모리 단위에 저장 _ vector, deque 등
- 노드 기반 컨테이너(node-based container) : 데이터 하나를 하나의 메모리 단위에 저장 _ map, set 등
반복자(iterator)
- 컨테이너와 알고리즘이 하나로 동작하게 묶어주는 인터페이스 역할
- 컨테이너 내부의 원소(객체)를 가리키고 접근할 수 있다.
- 컨테이너의 모든 원소를 순회할 수 있어야 한다.
- ==와 != 연산자로 순차열의 끝인지를 판단한다.
- 순방향 반복자(forward iterator) : 입력, 출력 반복자 기능에 순방향으로 이동(++)이 가능한 재할당될 수 있는 반복자
- 양방향 반복자(bidirectional iterator) : 순방향 반복자 기능에 역방향으로 이동(--)이 가능한 반복자
- 임의 접근 반복자(random access iterator) : 양방향 반복자 기능에 +, -, +=, -=, []연산이 가능한 반복자
# set, mpa 등은 양방향 반복자
# vector, deque 등은 임의 접근 반복자
알고리즘(Algorithms)
- 한 쌍의 반복자([begin, end))를 필요로 한다.
- 원소를 수정하지 않는 알고리즘(nonmodifying algorithms)
- 원소를 수정하는 알고리즘(modifying algorithms)
- 제거 알고리즘(removing algorithms)
- 변경 알고리즘(mutating algorithms)
- 정렬 알고리즘(sorting algorithms)
- 정렬된 범위 알고리즘(sorted range algorithms)
- 수치 알고리즘(numeric algorithms)
- find, sort 등이 있다.
'Language_ > Algorithm' 카테고리의 다른 글
[Algorithm] Permutation Algorithm(순열 알고리즘) with Python (4) | 2020.08.19 |
---|---|
[C++] 2차원 Vector (0) | 2019.09.20 |
[C++] STL 프로그래밍 _ unordered_map (0) | 2019.09.16 |
[C++] STL 프로그래밍 _ 컨테이너 (0) | 2019.09.16 |
[알고리즘] 유클리드 호제법 #c언어 (0) | 2018.09.26 |
댓글