[c++] 템플릿과 제네릭 데이터 타입

C++은 템플릿을 사용하여 제네릭 프로그래밍을 지원합니다. 제네릭 프로그래밍은 데이터 타입에 의존하지 않고 일반적인 알고리즘을 작성하는 방법입니다. 이를 통해 동일한 알고리즘을 서로 다른 데이터 타입에 대해 재사용할 수 있습니다.

템플릿 함수

템플릿 함수는 특정 데이터 타입에 의존하지 않고 작성된 함수입니다. 예를 들어, 정수나 실수 등 어떤 데이터 타입이라도 처리할 수 있는 함수를 만들 수 있습니다.

template <typename T>
T max(T a, T b) {
    return (a > b) ? a : b;
}

위의 예제에서 max 함수는 T라는 제네릭 데이터 타입을 받고 있습니다. 이 함수는 두 개의 값 중에서 더 큰 값을 반환하는데, T에 어떤 데이터 타입이 들어와도 동작합니다.

템플릿 클래스

템플릿 클래스는 특정 데이터 타입에 의존하지 않고 작성된 클래스입니다. 다음은 템플릿 클래스의 간단한 예제입니다.

template <class T>
class Stack {
private:
    T elements[100];
    int top;

public:
    void push(T value);
    T pop();
};

위의 예제에서 Stack 클래스는 T라는 제네릭 데이터 타입을 사용하여 스택을 구현하고 있습니다. 이를 통해 int, float, char 등과 같은 다양한 데이터 타입에 대해 동작하는 스택을 구현할 수 있습니다.

제네릭 프로그래밍을 통해 코드의 재사용성을 높이고 유지보수를 쉽게 할 수 있습니다. C++의 템플릿을 활용하여 제네릭 데이터 타입을 다루는 방법에 대해 알아보았습니다.

더 자세한 내용은 C++ 템플릿 문서를 참고할 수 있습니다.