[프로그램]

C++에서 템플릿은 제네릭 프로그래밍을 지원하기 위한 강력한 기능입니다.

Blackberrys 2023. 7. 17. 12:05
반응형

 

 

C++에서 템플릿은 제네릭 프로그래밍을 지원하기 위한 강력한 기능입니다. 템플릿을 사용하면 함수나 클래스를 일반화하여 재사용할 수 있습니다. 아래는 C++에서 템플릿을 사용하는 방법과 예제입니다:

함수 템플릿:


#include <iostream>

// 두 개의 값을 교환하는 함수 템플릿
template<typename T>
void swapValues(T& a, T& b)
{
    T temp = a;
    a = b;
    b = temp;
}

int main()
{
    int x = 10, y = 20;
    std::cout << "교환 전: x=" << x << ", y=" << y << std::endl;

    swapValues(x, y);

    std::cout << "교환 후: x=" << x << ", y=" << y << std::endl;

    return 0;
}


위의 예제에서 swapValues 함수는 두 개의 값을 교환하는 템플릿 함수입니다. typename T는 템플릿 매개변수로서 어떤 자료형이든 사용할 수 있음을 나타냅니다. swapValues 함수는 T 타입의 두 매개변수 a와 b를 받아 값을 교환합니다. main 함수에서 int 형 변수 x와 y를 교환하는 예제로 사용하였습니다.

클래스 템플릿:


#include <iostream>

// 벡터 클래스 템플릿
template<typename T>
class Vector
{
private:
    T* elements;
    int size;

public:
    Vector(int size)
    {
        this->size = size;
        elements = new T[size];
    }

    ~Vector()
    {
        delete[] elements;
    }

    T& operator[](int index)
    {
        return elements[index];
    }
};

int main()
{
    Vector<int> intVector(5);
    for (int i = 0; i < 5; ++i)
    {
        intVector[i] = i * 2;
    }

    for (int i = 0; i < 5; ++i)
    {
        std::cout << intVector[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}


위의 예제에서 Vector 클래스는 템플릿 클래스로서 typename T를 사용하여 일반화된 자료형을 표현합니다. Vector 클래스는 size 크기의 동적 배열을 저장하고, operator[]를 통해 배열 요소에 접근할 수 있도록 구현되었습니다. main 함수에서 Vector<int> 타입의 객체를 생성하고 사용하는 예제로 사용하였습니다.

템플릿은 다양한 자료형이나 클래스에 대해 일반화된 코드를 작성할 수 있도록 해줍니다. 이는 코드의 재사용성과 유연성을 높여줍니다.