русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Функции-шаблоны


Дата добавления: 2013-12-23; просмотров: 807; Нарушение авторских прав


Глава 9. Шаблоны и библиотека STL

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

Функция-шаблон определяет общий набор операций, который будет применен к данным различ­ных типов. Используя этот механизм, можно применять некоторые общие алгоритмы к широко­му кругу данных. Как известно, многие алгоритмы логически одинаковы вне зависимости от типа данных, с которыми они оперируют. Например, алгоритм быстрой сортировки quicksort один и тот же и для массива целых чисел, и для массива чисел с плавающей запятой. Отличается только тип данных, подлежащих сортировке. При помощи создания функции-шаблона (generic function) можно определить сущность алгоритма безотносительно к типу данных. После этого компилятор автоматически генерирует корректный код для того типа данных, для которого создается данная конкретная реализация функции на этапе компиляции. По существу, когда создается функция-шаблон, создается функция, которая может автоматически перегружать сама себя.

Функции-шаблоны создаются с использованием ключевого слова template (шаблон). Обычное значение слова «шаблон» достаточно полно отражает его использование в C++. Шаблон исполь­зуется для создания каркаса функции, оставляя компилятору реализацию подробностей. Общая форма функции-шаблона имеет следующий вид:

template<class тип1, class тип2, ...> возвращаемый_тип имя_функции(список параметров)

{

// тело функции

}

Здесь тип1, тип2, и т.д.являются параметрами-типами и представляют типы дан­ных, которые используются функцией. Эти параметры-типы могут быть использованы в определении функции. Во время создания конкретной версии функции компилятор автоматически заменяет эти параметры на фактические типы данных.



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

#include <iostream.h>

template <class X> void swap(X &a, X &b)

{

X temp = a; a = b; b = temp;

}

int main()

{

int i=10, j=20;

float x=10.1, y=23.3;

char a='x', b='z';

cout << "Original i, j: " << i << “ “ << j << endl;

cout << "Original x, y: " << x << “ “ << у << endl;

cout << "Original a, b: " << a << “ “ << b << endl;

swap(i, j); // обмен целых

swap(x, y) ; // обмен вещественных значений

swap(a, b) ; // обмен символов

cout << "Swapped i, j: " << i << “ “ << j <<endl;

cout << "Swapped x, y: " << x << “ “ << у << endl;

cout << "Swapped a, b: " << a << “ “ << b << endl;

return 0;

}

Рассмотрим эту программу более внимательно. Строка

template <class X> void swap(X &a, X &b)

указывает компилятору, что создается шаблон. Здесь X — имя параметра-типа. Далее следует объявление функции swap() с использованием типа данных X для тех параметров, которые будут обмениваться значениями. В функции main() функция swap() вы­зывается с передачей ей данных трех различных типов: целых чисел, чисел с плавающей запятой и символов. Поскольку функция swap() является функцией-шаблоном, то компилятор автоматичес­ки создаст три разные версии функции swap() — одну для работы с целыми числами, другую для работы с числами с плавающей запятой и, наконец, третью для работы с переменными символь­ного типа.



<== предыдущая лекция | следующая лекция ==>
Форматирование на основе массивов | Пример с двумя типами-шаблонами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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