C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 4 - Шаблоны функций основа STL / Библиотеки и функции / Visual C++

Шаг 4 - Шаблоны функций основа STL

Можно смело сказать, что основу STL составляют шаблоны. Именно они позволяют значительно сократить количество кода для программирования алгоритмов.

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

(x*x)-(2*x)

Для типа int и double. Что делается классически ??? Пишутся две функции. Например так:

#include "stdafx.h"
#include "iostream.h"

int FuctInt(int x)
{
	return (x*x)-(2*x);
}

double FuctDouble(double x)
{
	return (x*x)-(2*x);
}

void main()
{
	cout << "Int " << FuctInt(25) << endl;
	cout << "Double " << FuctDouble(3.12) << endl;
}

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

#include "stdafx.h"
#include "iostream.h"


template 
T fuct(T value)
{
	return (value*value)-(2*value);
}


int FuctInt(int x)
{
	return (x*x)-(2*x);
}

double FuctDouble(double x)
{
	return (x*x)-(2*x);
}

void main()
{
	cout << "Int " << FuctInt(25) << endl;
	cout << "Double " << FuctDouble(3.12) << endl;
	cout << "----------- template ---------------" << endl;
	cout << "Int " << fuct(25) << endl;
	cout << "Int " << fuct(3.12) << endl;
}

Шаблон начинается словом template, после описания фигурные скобки:

template < [список типов] [, [ список аргументов ]] >
{
	реализация функции
	return
}

Обратите внимание на return. Это именно шаблон функции, а не шаблон класса.


Загрузить проект | | |
Автор Каев Артем.
[AD]