cpp 07

jiwoo·2022년 12월 22일
0

cpp

목록 보기
8/9

CPP 07

생성일: 2022년 12월 14일 오전 12:35
최종 편집 일시: 2022년 12월 15일 오후 5:13
cpp notion

CPP MODULE 07

templates

템플릿 !


ex00 Start with a few functions

함수 템플릿 만들고 다뤄보기

  • 템플릿
    • 함수 템플릿을 사용하면 같은 알고리즘을 기반으로 하면서, 서로 다른 타입에서 동작하는 함수를 한 번에 정의할 수 있습니다.
    • 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀.
    • 함수 템플릿(Function Template)와 클래스 템플릿(Class Template) 로 나누어집니다.
    • 붕어빵 틀!
    • 하나하나 파라미터 타입을 달리하며 함수 오버로딩을 하는 수고를 덜어준다.
  • 네임스페이스
    namespace NamespaceA{
        int x;
    }
    
    int x;
    
    int main() {
        int x;
    
        // the x in main()
        x = 0;
        // The x in the global namespace
        ::x = 1;
    
        // The x in the A namespace
        NamespaceA::x = 2;
    }
  • min max
    • 레퍼런스를 반환하면 문제가 생긴다.
    • stack 메모리의 값이 파라미터로 들어왓을때 그것을 참조형으로 보내는 것은 불가능함

ex01 Iter

함수 템프릿 Iter 만들기

  • 일반 버전 iter, const 버전 iter 두가지 타입을 만들어 주었다.
  • T에 대하여 직접적인 접근이 필요한 경우
  • const T 여서 값 변경이 불가능한 경우
template <typename T>
void	iter(T *arr, size_t len, void (*func)(T &)){
	for (size_t i = 0; i < len; i++)
		func(arr[i]);
}

template <typename T>
void	iter(T const *arr, size_t const len, void (*func)(T const &)){
	for (size_t i = 0; i < len; i++)
		func(arr[i]);
}

ex02

클래스 템플릿 Array 만들기

  • 클래스 템플릿

0개의 댓글