ШАБЛОНЫ, КОТОРЫЕ ИСПОЛЬЗУЮТ НЕСКОЛЬКО ТИПОВ
Предыдущее определение шаблона для функции max использовало единственный общий тип Т. Очень часто в шаблоне функции требуется указать несколько типов. Например, следующие операторы создают шаблон для функции show_array, которая выводит элементы массива. Шаблон использует тип Т для определения типа массива и тип Т1 для указания типа параметра count:
templateclass T,class T1 void show_array(T *array,T1 count)
{
T1 index;
for (index =0; index count; index++) cout array[index] ' ';
cout endl;
}
Как и ранее, программа должна указать прототипы функций для требуемых типов:
void show_array(int *, int);
void show_array(float *, unsigned);
Следующая программа SHOW_TEM.CPP использует шаблон для создания функций, которые выводят массивы типа int и типа float.
#include iostream.h
templateclass T,class T1 void show_array( T *array,T1 count)
{
T1 index;
for (index =0; index count; index++) cout array[index] “ ' ';
cout endl;
}
void show_array(int *, int);
void show_array(float *, unsigned);
void main(void)
{
int pages[] = { 100, 200, 300, 400, 500 };
float pricesH = { 10.05, 20.10, 30.15 };
show_array(pages, 5);
show_array(prices, 3);
}
Шаблоны и несколько типов
По мере того как шаблоны функций становятся более сложными, они могут обеспечить поддержку нескольких типов. Например, ваша программа может создать шаблон для функции с именем array_sort, которая сортирует элементы массива. В данном случае функция может использовать два параметра: первый, соответствующий массиву, и второй, соответствующий количеству элементов массива. Если программа предполагает, что массив никогда не будет содержать более 32767 значений она может использовать тип int для параметра размера массива. Однако более универсальный шаблон мог бы предоставить программе возможность указать свой собственный тип этого параметра, как показано ниже:
templateclass Т, class T1 void array_sort(T array[], T1 elements)
{
// операторы
}
С помощью шаблона array_sort программа может создать функции которые сортируют маленькие массивы типа float (менее 128 элементов) и очень большие массивы типа int, используя следующие прототипы:
void array_sort(float, char);
void array_sort(int, long);