본문 바로가기
Language_/Algorithm

[C++] STL 프로그래밍 개념

by 낭람_ 2019. 10. 4.
반응형

[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 등이 있다.



반응형

댓글