본문 바로가기

기타/C++ 조지기

[명품 C++] 11. 템플릿과 STL

예제 10-1 제네릭 myswap( ) 함수 만들기 

#include <iostream>
using namespace std;

class Circle {
    int radius;
public:
    Circle (int radius =1) {
        this -> radius = radius;
    }
    int getRadius() {
        return radius;
    }
};

template <class T>
void myswap(T &a, T &b) {
    T tmp;
    tmp = a;
    a = b;
    b = tmp;
}

int main() {
    int a=4, b=5;
    myswap(a,b);
    cout << "a= " << a << ", " << "b= " << b << endl;

    double c= 0.3, d= 12.5;
    myswap(c,d);
    cout << "c=" << c << ", d= " << d << endl;

    Circle donut(5), pizza(20);
    myswap(donut,pizza);
    cout << "donut radius= " << donut.getRadius() << ", " << "pizza radius= " << pizza.getRadius()<< endl; 
}

 

예제 10-2

#include <iostream>
using namespace std;


template <class T>
T bigger(T a, T b){
    if (a>b)
        return a;
    else    
        return b;
}

int main(){

    int num1,num2;
    num1 = 1;
    num2 = 2;
    cout << bigger(num1,num2) << endl;

    float num3,num4;
    num3 = 1.342;
    num4 = 0.123;
    cout << bigger(num3,num4) << endl;


}