Форум программистов, компьютерный форум CyberForum.ru

Что такое шаблоны в C++? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какая у буста лицензия? http://www.cyberforum.ru/cpp-beginners/thread858962.html
Если я использую boost, должен ли я буду весь проект распространять бесплатно и открыть исходный текст?
C++ Нужна из текстового файла с целыми числами найти минимальное и вывести его на экран Нужно из текстового файла с целыми числами найти минимальное и вывести его на экран http://www.cyberforum.ru/cpp-beginners/thread858941.html
Сохранение экрана консоли C++
Допустим, что то есть на экране размером 80x50 и я хочу записать все что есть на экране в чар массив, но не знаю как это сделать. Подскажите как будет правильно это сделать. char mas_screen; for (int i = 1; i < 51 ; i++) { for (int j=1; j < 81; j++) { gotoxy(i,j); cin>>mas_screen; } }
C++ Из файла прочитать множество произвольных целых чисел,упорядочить и вывести в поле вывода
По идее должно получится нечто типа: (но нужна форма и использование openFileDialog1 saveFileDialog1) #include <iostream> #include <time.h> #include <fstream> #include <math.h> using namespace std; int main() { int chislo = 0; int x=0,j,a;
C++ Длинная арифметика http://www.cyberforum.ru/cpp-beginners/thread858903.html
Длинная арифметика — это набор программных средств (структуры данных и алгоритмы), которые позволяют работать с числами гораздо больших величин, чем это позволяют стандартные типы данных. Посоветуйте книгу по этой теме где нормально пояснено арифметические операции с использованием длинной арифметики.
C++ Массив и подмассив (определить, является ли второй массив подмассивом первого) Поставлена следующая задача: Ввод из: input.txt Вывод в: output.txt Дано два одномерных массива. Один из N элементов, второй из R элементов. Необходимо определить, является ли второй массив подмассивом первого. Если да, то вывести номер позиции в первом массиве, начиная с которой начинается второй массив, в противном случае вывести слово «NO». Входные данные: В первой строке дано... подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.05.2013, 09:32     Что такое шаблоны в C++?
Цитата Сообщение от programina Посмотреть сообщение
Что такое шаблоны и для чего они нужны? Если не трудно приведите показательный пример применения шаблона.
На плюсах существует две категории шаблонов: шаблоны классов и шаблоны функций. Шаблон функции есть однократно функция, выполняющая операции одной семантики с данными разных типов и описанная ровно один раз для всех типов своих параметров, она имеет один исходный текст своего тела для всех типов данных, к которым применима, а за различие внутренней реализации операций отвечает перегрузка используемых в ней операторов и вызываемых ею других функций, перегрузка самой функции выполняется автоматически. Шаблон же класса есть сокращённая запись нескольких классов, различающихся типами фактических членов и/или определёнными в этих классах константами, но не исходным текстом.

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
template<typename T>
void swap(T &a, T &b)
{
 T t;
 t=a;
 a=b;
 b=t;
}
заменяет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
void swap(int &a, int &b)
{
 int t;
 t=a;
 a=b;
 b=t;
}
void swap(char &a, char &b)
{
 char t;
 t=a;
 a=b;
 b=t;
}
void swap(float &a, float &b)
{
 float t;
 t=a;
 a=b;
 b=t;
}
void swap(double &a, double &b)
{
 double t;
 t=a;
 a=b;
 b=t;
}
void swap(signed &a, signed &b)
{
 signed t;
 t=a;
 a=b;
 b=t;
}
void swap(unsigned &a, unsigned &b)
{
 unsigned t;
 t=a;
 a=b;
 b=t;
}
void swap(short &a, short &b)
{
 short t;
 t=a;
 a=b;
 b=t;
}
void swap(long &a, long &b)
{
 long t;
 t=a;
 a=b;
 b=t;
}
 
void swap(signed short &a, signed short &b)
{
 signed t;
 t=a;
 a=b;
 b=t;
}
void swap(unsigned short &a, unsigned short &b)
{
 unsigned short t;
 t=a;
 a=b;
 b=t;
}
void swap(signed long &a, signed long &b)
{
 signed long t;
 t=a;
 a=b;
 b=t;
}
void swap(unsigned long &a, unsigned long &b)
{
 unsigned long t;
 t=a;
 a=b;
 b=t;
}...
и так для всех существующих в проекте типов, включая структуры и классы. Одна единственная функция swap будет менять местами операнды всех типов и иметь соответствующие перегруженные версии, если её описать в виде шаблона функции.
 
Текущее время: 12:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru