Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тело функции




Тип_ результата имя_функции (параметры)

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

 

При написании программы на С + + может возникнуть необходимость создать несколько функций, которые выполняют одни и те же действия, но с данными разных типов. Например, нужно создать функции, определяющие максимальные элементы для массивов int и double. Или выполнять сортировку элементов массивов разных типов и т.д. В этих случаях удобно написать шаблон функции, по которому компилятор самостоятельно создает функцию для каждого из типов данных. При определении шаблона функции будут использоваться формальные типы данных, а при обращении к шаблону будут указываться соответствующие фактические типы данных.

Синтаксис шаблона функции имеет вид:

template< список_формальных_типов_шаблона>

{

}

За ключевым словом template следует один или несколько аргументов, заключенных в угловые скобки или отделенные друг от друга запятыми. Каждый аргумент состоит из ключевого слова class и идентификатора, обозначающего формальный тип. Затем следует определение функции. Оно похоже на обычное определение функции, за исключением того, что один или несколько параметров используют типы, специфицированные в списке аргументов шаблона.

Рассмотрим примеры использования шаблонов при создании функции нахождения суммы элементов одномерных массивов, а также их сортировки для разных типов данных.

Пример 1

# include < iostream. h>

template < class T >

T sum (T x [ ], int n)

{

T s = Ø; // s – переменная типа class T

for (int i = Ø; i < n; i ++)

s+ = x [ i ];

return s;

}

/ * Определен шаблон функции для вычисления суммы элементов одномерного массива типа class T * /

void main ()

{

int m [ ] = {1,2,3,4,5,6,7,8,9,10};

int sum_int = sum (m,10);

/*Компилятор создает по шаблону функцию sum для целого типа int */

cout << ” sum_int = “ <<sum_int << ‘ \ n ’;

float x [ ] = { -1, Ø, 2.5, -Ø.1, Ø.15};

float sum_float = s (x, 5);

/*Компилятор создает по шаблону функцию sum для типа float */

cout <<”sum_float =” << sum_float << ‘ \ n ’;

}

Пример 2

Сортировка элементов одномерного массива методом «пузырька».

# include < iostream. h >

template < class T >

void sort (T x [ ], int n)

{

T v; // v – переменная типа class T

for (int k = n-1; k>Ø; i + +)

for(int i=0;i<k;i++

)

if (x [i + 1] < x [ i ])

{

v = x [ i + 1];

x [ i+1] = x [ i ];

x [ i ] = v;

}

}

/* Определен шаблон функции сортировки элементов одномерного массива */

void main ()

{

int m [1Ø] = {1Ø, 1, 9, 2, 8, 3, 7, 4, 6, 5};

sort (m, 1Ø);

/* Компилятор создает по шаблону функцию sort для целого типа int. После сортировки массив m имеет вид:

for (int i = Ø; i < 1Ø; i + +)

cout << “ m [“ << i << “] = “ << m [ i ] << ‘ \ n ‘;

float x [ 5 ] = {5, -1, 4, -2, 3};

sort (x, 5);

/* Компилятор создает по шаблону функцию sort для типа float. После сортировки массив ч имеет вид: */

for (i = Ø; i < 5; i + +)

count << “ x [“ << i << “] = “ << x [ i ] << ‘ \ n ‘;

}

Заключение

 

На этом заканчивается относительно краткое изложение алгоритмического языка С + +. Как уже было сказано во введении, отобранный материал позволяет получить основные сведения об этом языке и самостоятельно программировать на нем. Дополнительные сведения, которые можно получить из приведенных литературных источников или из Internet, позволят повысить эффективность ваших программ за счет использования тех возможностей языка С + +, которые не освещены в лекциях.

 

 




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 288; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.