함수 템플릿
-
[Template] 템플릿 구체화개발/C·C++ 2021. 7. 5. 04:19
STL 컨테이너를 보면 선언과 정의가 분리되어 있지 않습니다. 클래스는 선언부와 정의부를 나누는 경우가 조금 더 일반적일 텐데요. 일반화 프로그래밍이라는 템플릿 라이브리리는 일반적인 방법을 따르지 않는 것처럼 보입니다. 라이브러리를 만드는 사람들이 뭘 몰라서 그런 것은 아닐 테니까, 그럴 만한 이유가 있을 겁니다. 그 이유를 파악해 봅시다. #include int main() { std::vector vec; for (int i = 0; i < 5; ++i) vec.push_back(i); } 간단한 벡터 예제입니다. 연산자를 통해 int형 데이터를 담을 수 있는 컨테이너를 만들어 반복문을 이용해 0부터 4까지 넣었습니다. std::vector을 명시적 구체화라고 합니다. 함수 템플릿에 넣는 인수를 통해..
-
[template] 함수 템플릿(function template)개발/C·C++ 2021. 4. 30. 20:29
클래스 자체는 객체가 아니듯이 함수 템플릿은 함수가 아닙니다. 함수를 만들어내는 형판 같은 것입니다. template이라는 키워드는 일반화 프로그래밍을 하게 해줍니다. 영어로는 generic programming이라고 합니다. 객체 지향을 명확하게 몇 가지 문장으로 정의하기 어렵듯이 일반화 프로그래밍도 비슷합니다. 좁은 범위에서는, 특정 타입에 얽매이고 다양한 타입에 대응할 수 있는 프로그램을 작성하는 것, 정도로 생각할 수 있습니다. 다음 예제에서 함수 템플릿을 확인해보겠습니다. template void swap(T& x, T& y) { T temp = x; x = y; y = temp; } int main() { int x = 20, y = 30; //swap(x, y) // explicitly(in..