Каков принцип шаблона в C ++? - PullRequest
       2

Каков принцип шаблона в C ++?

3 голосов
/ 07 сентября 2010

А какая библиотека шаблонов должна быть у начинающего пользователя?

Не уверен, что ОС имеет значение, я говорю об Windows, если это важно.

Ответы [ 4 ]

5 голосов
/ 07 сентября 2010

Шаблоны - это все об общем программировании.Концепция выглядит следующим образом: вы определяете тело функции / класс, который будет работать с любыми данными (имеющими некоторые свойства, например, определенный оператор).Предположим, вы пишете функцию, которая будет возвращать суммирование заданных параметров:

int sum(int a, int b)
{
    return a + b;
}

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

std::string s1 = "abc", s2 = "def";
std::string s = sum(s1, s2);

Для этого sum() вызова вам нужно определить другую версию sum().Шаблоны сохранят вашу работу.Просто напишите определение sum() следующим образом:

template<typename T>
T sum(const T& a, const T& b)
{
    return a + b;
}

Теперь функция sum() будет работать для любого типа данных, для которого определен operator+.

РЕДАКТИРОВАТЬ

Вам нужно сначала изучить STL (Стандартная библиотека шаблонов) , если вы хотите быть программистом на C ++.

3 голосов
/ 07 сентября 2010

Для начинающих лучше начать с хорошей книги .А Стандартная библиотека (часто также называемая STL) - это библиотека шаблонов, с которой вы должны начать.

2 голосов
/ 07 сентября 2010

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

Основная идея шаблонов бихинга - это понятие общего кода.Код, который вам нужен для связанного списка целых чисел, выглядит почти так же, как код для связанного списка строк;для массива целых чисел почти так же, как массив строк.Шаблоны позволяют вам написать связанный список T объектов, без указания T заранее.Затем, когда вам нужен связанный список целых чисел, вы просто указываете компилятору создать экземпляр этого связанного списка с T==int.

Теперь связанные списки довольно распространены.Поэтому вам не нужно писать шаблон связанного списка;Стандартная библиотека (входит в каждый компилятор) содержит шаблон std::list<T>.Чтобы использовать его, просто скажите компилятору, какой список вам нужен.std::list<float>, std::list<std::string> и так далее.Помимо таких контейнерных классов существуют также алгоритмы.Это тоже шаблоны - std::sort< > может сортировать много разных контейнеров.В отличие от qsort из C, компилятор C ++ знает, что он сортирует, и это ускоряет std::sort< >.

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

0 голосов
/ 07 сентября 2010

принцип? Я бы сказал, что в основном это сводится к тому, чтобы «не изобретать велосипед» и не быстро разрабатывать приложения (RAD), создавая общий код, который можно повторно использовать в различных ситуациях, просто изменяя параметры шаблона. хороший пример этого - std::list или std::vector

Что касается того, что использовать, хорошо, это зависит от ваших целей (то есть: какого рода или прагметра вы делаете, что нужно будет делать?), Хотя обычно вы можете использовать либо boost и / или библиотеки STL, которые в настоящее время поставляются с большинством компиляторов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...