Шаблоны являются функцией основного языка 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-взаимодействия, которое вы хотите использовать.