728x90
반응형

[STL(Standard Template Library)]

- 표준에서 등록된 템플릿의 집합

- C++에서 제공하는 라이브러리의 일종으로 프로그래밍에서 필요한 자료구조 및 알고리즘을 클래스 템플릿화하여 제공한다.

- 템플릿을 사용하기 때문에 모든 자료형을 호환한다.

- 컨테이너 / 알고리즘 / 반복자 / 함수객체 등으로 구성된다.

 

[컨테이너]

- 자료구조를 구현한 객체이다.

- 종류

1) vector - 동적 배열 기반

2) list - 노드 기반

3) map - 트리 기반

- 컨테이너 구분 기준

1. 원소 배치 방법 - 표준 시퀀스 컨테이너 (선형적인 구조) : vector , list

                       - 표준 연관 컨테이너 (비선형적인 구조) : map

2. 메모리 저장 방식 - 배열 기반 (연속된 메모리) : vector

                          - 노드 기반 (비연속된 메모리) : list , map

 

[컨테이너 어댑터(container adapter)]

- 기존 컨테이너의 인터페이스를 제한하여 만든 기능이 제한되거나 변경된 컨테이너를 의미한다.

- 특정 형태의 동작만을 수행하도록 한다.

- 단, 반복자의 지원이 없기 때문에 STL 알고리즘에서는 사용할 수 없다.

- 종류 : 스택(stack), 큐(queue), 우선순위 큐(priority_queue)

 

[알고리즘]

- 문제 해결 방법/기능

- 컨테이너 내에서 정렬, 삭제, 탐색 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿이다.

- 대부분의 알고리즘들은 특정 컨테이너의 멤버가 아닌 전역에 정의되어 있다.

  -> 하나의 컨테이너만 독점적으로 사용하는 것이 아니라 모든 컨테이너들이 사용할 수 있도록.

 

[함수객체]

- 함수 호출 연산자를 연산자 오버로딩하여 사용하는 것.

- 객체를 함수처럼 사용하는 것이다.
   -> 객체 이름 뒤에 매개변수를 전달한다.

- () <- 함수호출 연산자

 

[반복자]

- STL의 핵심

- 반복자를 사용하여 모든 STL이 작동한다.

- 포인터를 사용하듯 반복자를 동일하게 사용할 수 있다.

- 특정 컨테이너 안에 정의된 객체이다!! 

- (중요) 포인터가 아니라 객체이다!!!

728x90
반응형

'c++ > c++' 카테고리의 다른 글

알고리즘 - for_each  (0) 2021.05.29
STL - vector container  (0) 2021.05.26
연산자 오버로딩 - string class 구현2  (0) 2021.05.23
연산자 오버로딩 - string class 구현1  (0) 2021.05.22
const와 포인터  (0) 2021.05.22

+ Recent posts