template тақырыбы{
/*функция тұлғасы */
}
Type
сөзінің орнына кез келген атау қолданылуы мүмкін.
Жалпы жағдайда функция шаблонында бірнеше параметр болуы мүмкін,
олардың əрқайсысы тип қана емес, қарапайым айнымалы болуы да ықтимал,
мысалы:
template void f(){ ... }
Мысалы, таңдау əдісімен (бұл əдіс 58 б. қарастырылған) кез келген типтегі
n
элементтен тұратын жиымды сұрыптайтын функцияны шаблон ретінде
төмендегідей түрде сипаттауға болады:
template
void sort_vybor(Type *b, int n){
Type а;
// элементтерді алмастыруға
//арналған буферлік айнымалы
for (int i = 0; i
int imin = i;
for (int j = i + 1; j
if (b[j] < b[imin]) imin = j;
а = b[i]; b[i] = b[imin]; b[imin] = a;
}
}
Программаның жоғарыдағы шаблон-функцияны шақыратын негізгі функ-
циясы келесі түрде болуы мүмкін:
#include
template void sort_vybor(Type *b, int n);
int main(){
const int n = 20;
int i, b[n];
for (i = 0; i> b[i];
90
sort_vybor(b, n);
// Бүтін сандар жиымын сұрыптау
for (i = 0; i
cout << endl;
double a[] = {0.22, 117, -0.08, 0.21, 42.5};
sort_vybor(a, 5);
// Нақты сандар жиымын сұрыптау
for (i = 0; i<5; i++) cout << a[i] << ' ';
return 0;
}
Мəліметтердің белгілі бір типін пайдаланатын функцияны алғашқы рет
шақыру кезінде компилятор функцияның соған сəйкес нұсқасы үшін код
құрайды. Бұл процесс шаблонды инстанциялау деп аталады (instantiation).
Инстанциялануы тиіс белгілі бір типті компилятор функцияны шақыру
кезіндегі параметрлер типтеріне байланысты автоматты түрде анықтайды
немесе ол айқын түрде беріледі. Дəл осы мəліметтер типімен функцияны
қайталап шақыру кезінде код қайта генерацияланбайды. Тип емес айны-
малы болып табылатын шаблон параметрінің орнында тұрақтылық өрнек
көрсетілуі тиіс
1
.
Функцияны шақыру кезінде шаблон аргументтерін айқын түрде беру
мысалы:
Достарыңызбен бөлісу: |