1.3.24 Шаблоны функций

       Если алгоритм не зависит от типа данных, то его нужно реализовать в виде шаблонов функций.
      Шаблон применяется для одинаковых действий на данными разных типов. Перегруженные функции применяются для оформления действий аналогичных по названию, но различных по реализации.   Формат шаблона имеет вид
Template <class Type> Тип имя ([cписок парааметров])
{ /тело функции*/}
     Идентификатор Type задает параметризованный тип, который используется как в заголовке, так и теле функции. Это фиктивное имя заменяется на реальный тип при работе транслятора.
      Процесс создания конкретной версии функции называется созданием экземпляра функции. Известно два способа создания экземпляров функций:
   1) явный- когда все параметризированные типы заменяются на известные в данный момент типы,
   2) неявный- когда создание экземпляра функции происходит в момент фактического вызова функции.
  Пример:
  Программа, определяющая максимальный элемент в массивах разного типа.
#include <iostream.h>
#include <string.h>
template <class T> TMax (T *b,int n);
int main()
{
const int n=20;
int i,b[n];
cout<<”ïnput”<<n<<”integer”<<endl;
for (i=0;i<n;i++)cin>>b[i];
cout<<Max(b,n)<<endl;
double a[]={0.22,117.2,-0.08,0.21,42.5};
cout<<Max(a,5)<<endl;
char *str=”This is a proba”;
cout<<Max*strlen(str))<<endl;
return 0;
}
template <class T) TMax(T *b,int n){
int imax=0;
for(int i=1;i<n;i++)
if(b[i]>b[imax])imax=I;
return b[imax];}