template
템플릿(template): 물건을 만들 때 사용되는 틀이나 모형을 의미
함수 템플릿(function template): 함수를 찍어내기 위한 형틀
int get_max(int x, int y){
}
// 얘랑
float get_max(float x, float y){
}
얘처럼 여러 타입으로 선언하면 귀찮아
template<typename T>
T get_max(T x, T y)
{
if (x > y) return x;
else return y;
}
typename 대신 <class T> 로 써도 됨
템플릿 함수의 특수화
template <class T>
void increase (T& v){ v+= 1;}
template <> // 특수화 된 부분
void increase(int *& v){ v += 2; }
특수화를 해놓으면 우선권이 있어서 먼저 호출됨 ㅇㅇ
함수 중복
template <class T>
~~~~
template<> // 특수화
~~~
void increase(int *& v) { v += 3; }
오버로딩 한 함수가 제일 우선권을 가짐
템플릿 클래스의 사용
#include <iostream>
using namespace std;
template<class T>
class Box{
T data;
public:
Box(){}
void set(T value) {data = value;}
T get(){ return data; }
};
int main() {
Box<int> b1;
b1.set(100);
cout << b1.get() << endl;
Box<double> b2;
b2.set(3.14);
cout << b2.get() << endl;
return 0;
}
두개의 타입 매개 변수
두 개의 데이터를 저장하는 클래스 Box2
#include <iostream>
using namespace std;
template<class T1, class T2>
class Box2{
T1 data1;
T2 data2;
public:
Box2(){}
void set1(T1 value) {
data1 = value;
}
void set2(T2 value) {
data2 = value;
}
T1 get1();
T2 get2();
};
teplate<class T1, class T2>
T1 Box2<T1, T2>::get1(){ return data1; }
teplate<class T1, class T2>
T1 Box2<T1, T2>::get2(){ return data2; }
스택 stack : 후입 선출 구조(last in first out) 구조
가장 최근에 넣은 요소 : top
Stack [top]
아무값도 없으면 : -1 값 가짐
'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글
TIL (22.06.05) (0) | 2022.06.05 |
---|---|
TIL (22.05.30) (0) | 2022.05.30 |
TIL (22.05.23) (0) | 2022.05.23 |
TIL (22.05.18) (0) | 2022.05.18 |
TIL 22.05.11 (0) | 2022.05.11 |