Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Параметризованные манипуляторы




 

Требуют спецификации аргументов. Некоторые из них приведены ниже.

setbase (int _ b ) – задает основание преобразования.

setfill (int _ f ) – задает заполняющий символ.

setprecision (int _ n) – задает значение внутренней переменной n точности

вещественных чисел.

setw (int _ w) – задает ширину поля.

 

25.4 Шаблоны С + +

 

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

 

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

 

При написании программы на С + + может возникнуть необходимость создать несколько функций, которые выполняют одни и те же действия, но с данными разных типов. Например, нужно создать функции, определяющие максимальные элементы для массивов 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-11-05; Мы поможем в написании ваших работ!; просмотров: 430 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.