함수 또는 class를 개별적으로 모두 다시 작성하지 않더라도, 여러 자료형으로 이용할 수 있도록 만들어 놓은 것을 의미 Function Template : 함수의 기능은 명확하게 작성하지만, 그 자료형은 모호한 채로 두는 것을 의미 => template를 사용하면 인자의 자료형에 따라 다르게 여러 함수를 작성하지 않아도 됨 => 서로 다른 인자들을 control 할 수 있게
[template Statement (using class term)]
- class 내부의 멤버 변수의 자료형에 대해 template 선언도 가능 - 멤버 함수를 class 밖에서 선언 시에 template 선언을 다시 해야 함 - 객체를 생성할 때 그 자료형을 정해
[Class definition using Template Statement]
- class templates을 사용하면 개체 클래스의 패턴 또는 구조를 유형 독립적인 방법으로 지정할 수 있음 - 두 개의 개별 class를 제공하는 대신 하나의 클래스 템플릿을 작성하여 컴파일러가 특정 프로그램이 요구하는 대로 좌표를 인스턴스화할 수 있
[Definition of STL]
STL : 표준 C++ 라이브러리 (Standard Template Library)를 의미 => 프로그램에 필요한 자료구조와 알고리즘을 template로 제공하는 Library
[Standard Containers]
Container : 객체를 저장하고 있는 객체라고 표현 가능 (자료구조라고도 함) => class template으로 구현되어 있음 - Sequence Container : array, vector, list, deque
Iterators
포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리킴
Lambda Function
아래 사진은 Lambda Function의 꼴이다.
- Capture list : 외부 변수를 작성해 넣는다면 람다 함수 내부에서 사용할 수 있도록 capture 되는 것을 의미 - Parameter list : 실행시 받을 인자들을 의미 / 실제 함수에서 사용하는 인자 list와 동일하게 작성하면 됨 - Return type : 반한 타입 - Statements : 람다 함수를 진행할 때 실행할 내용