프로그래밍/C++

템플릿 Template

에어버스 2018. 4. 21. 12:25

템플릿 Template

int max(int x[], int len)
{
 int max = x[0];
 for (int i = 0; i < len; i++)
  if (max < x[i])
   max = x[i];
 return max;
}

long max(long x[], int len)
{
 long max = x[0];
 for (int i = 0; i < len; i++)
  if (max < x[i])
   max = x[i];
 return max;
}

double max(double x[], int len)
{
 double max = x[0];
 for (int i = 0; i < len; i++)
  if (max < x[i])
   max = x[i];
 return max;
}

int main()
{
 int small[] = { 1, 24, 34, 22 };
 long medium[] = { 23, 345, 234, 123 };
 double large[] = { 23.0, 1.4, 2.3, 56.2 };

 int lensmall = sizeof small / sizeof small[0];
 int lenmedium = sizeof medium / sizeof medium[0];
 int lenlarge = sizeof large / sizeof large[0];

 cout << max(small, lensmall) << endl;
 cout << max(medium, lenmediuml) << endl;
 cout << max(large, lenlarhe) << endl;
}

데이터 타입만 다를뿐 함수 내용이 같을때 템플릿을 사용하면 편하다.
컴파일 할때 위 처럼 각각의 함수가 만들어진다.

template<class T> max(T x[], int len)
{
 T max = x[0];
 for (int i = 0; i < len; i++)
  if (max < x[i])
   max = x[i];
 return max;
}

int main()
{
 int small[] = { 1, 24, 34, 22 };
 long medium[] = { 23, 345, 234, 123 };
 double large[] = { 23.0, 1.4, 2.3, 56.2 };

 int lensmall = sizeof small / sizeof small[0];
 int lenmedium = sizeof medium / sizeof medium[0];
 int lenlarge = sizeof large / sizeof large[0];

 cout << max(small, lensmall) << endl;
 cout << max(medium, lenmediuml) << endl;
 cout << max(large, lenlarhe) << endl;
}