STL
- 컨테이너 라이브러리에는 데이터를 저장하고 관리하는데 쓸수있는 컨테이너가 정의되어 있음.
- 반복자 라이브러리에는 반복자가 정의되어 있으며, 반복자는 포인터처럼 동작하는 객체로 컨테이너에 있는 객체의 순차열을 참조할때 사용
- 알고리즘 라이브러리에는 컨테이너에 저장된 원소에 적용할수 있는 알고리즘이 폭넓게 정의되어 있다.
- 수치 라이브러리에는 숫자와 관련된 기능이 폭넓게 정의되어 있으며, 원소에 수치 처리 기능이 있다.
템플릿
함수나 클래스를 매개변수로 작성한 명세.
매개변수화 타입 별칭으로 템플릿을 정의할수도 있다.
컨테이너
STL의 기능 대부분은 컨테이너와 관련되어 있다. STL의 근본이라고도 할수 있음.
컨테이너는 객체를 일정한 방식으로 저장하고 조직화하는 객체를 말한다.
- 순차 컨테이너는 객체들을 선형으로 저장하고, 반드시 연속으로 저장하지는 않는다.
- 연관 컨테이너는 객체들을 연관된 키와 함께 저장한다.
- 컨테이너 어댑터는 순차 컨테이너나 연관 컨테이너에 저장된 데이터에 접근하는 다른방법을 제공하는 어댑터 클래스 템플릿을 말한다.
- 기본적으로 T 객체를 컨테이너에 저장하려면 조건이 있는데, 기본생성자, 복사생성자, 소멸자, 할당연산자가 필요하다.
객체들이 RValue가 아니면 모든 STL 컨테이너는 객체를 저장할때 복사본을 저장하고,
STL에서 이동 생성자와 이동 할당 연산자가 반드시 noexcept로 지정되어야 된다.
컨테이너는 객체들을 힙에 저장하고 객체가 차지하는 공간도 자동으로 관리한다. 할당자std::allocator<T>
담당한다.
반복자
포인터와 비슷하게 동작하는 클래스 템플릿 타입의 객체
반복자를 사용하면, 컨테이너에 있는 원소들에 접근하면서 일정한 방식으로 원소들을 처리할수 있다.
반복자 카테고리
- 읽기 반복자
*iter
을 지원한다. - 출력 반복자
*iter = new_value
을 지원한다. - 순방향 반복자
- 양방향 반복자
- 랜덤 엑세스 반복자
1 |
|
스트림 반복자
스트림과 소스 또는 스트림과 타깃 사이에 데이터를 텍스트 모드로 전송할수 있다.
1 |
|
알고리즘
알고리즘은 데이터 원소들을 반복자로 접근하기 때문에 알고리즘은 데이터가 저장되는 위치에 관여하지않는다.
알고리즘 분류
- 변경불가 순차열 연산, 순차열의 내용을 변경하지 못한다.
- 변경가능 순차열 연산, 순차열의 내용을 변경한다.
- 정렬, 병합과 관련된 알고리즘은 순차열의 순서를 변경한다.
1 |
|
문제풀이
1 |
|