Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Лабораторная работа n 8



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

1.Перегрузка и шаблоны функций

В одной программе может быть размещено несколько функций с одним и тем же именем, если списки формальных параметров у них различны. Требование уникальности, таким образом, предъявляется к расширенному имени функции, состоящему из собственно имени функции и списка формальных параметров.

Для описания семейства функций, реализующих аналогичные алгоритмы, можно воспользоваться шаблоном функции в соответствии со следующим синтаксисом:

template <<список формальных параметров шаблона>><возвращаемое значение><имя функции>(<список формальных параметров функции>)

{<тело функции>}

Список формальных параметров шаблона содержит формальные параметры типа, разделенные запятыми. Формальный параметр может состоять из ключевого слова class и идентификатора типа.

Пример описания шаблона

template <class T> min(T t1,T t2)

{if(t1,t2) return t1; else return t2;}

Конкретная функция генерируется из шаблона компилятором при обработке вызова функции с конкретными фактическими параметрами.

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

//специализированная версия min():

char *min(char*t1,char*t2)

{if(strcmp(t1,t2)<0) return t1; else return t2;}

В функции main при первом вызове min используется ее специализированная версия, а при втором – версия, сгенерированная по шаблону для данных типа float:

void main()

{ char *p=min(“abc”,”123”);

float a=min(1.2,3.4);

}

2.Задание на лабораторную работу

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

Определение количества элементов, равных первому

Обмен значениями двух элементов, заданных номерами

Определение номера элемента, заданного значением

Обращение массива

Вставка заданного элемента в заданную позицию массива

Удаление элемента, заданного номером

Определение размера самого длинного участка подряд следующих элементов с одинаковыми значениями

Определение размера самого короткого участка подряд следующих элементов с одинаковыми значениями

Замена всех элементов, имеющих заданное значение, элементами с другим заданным значением

Определение количества участков подряд следующих элементов с одинаковыми значениями





Дата публикования: 2014-12-10; Прочитано: 181 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...