C++ Шаблоны
Шаблоны — это основа обобщённого программирования, которое представляет собой способ написания кода, не зависящего от конкретного типа.
Шаблон — это чертёж или формула для создания обобщённых классов или функций. Библиотечные контейнеры, такие как итераторы и алгоритмы, являются примерами обобщённого программирования, и все они используют концепцию шаблонов.
Каждый контейнер имеет единственное определение, напримерvectorМы можем определять множество различных типов векторов, напримерvector <int>илиvector <string>。
Вы можете использовать шаблоны для определения функций и классов. Давайте посмотрим, как их использовать.
шаблон функции
Общая форма определения шаблона функции выглядит следующим образом:
Здесь type — это имя-заполнитель для типа данных, используемого функцией. Это имя можно использовать в определении функции.
Ниже приведён пример шаблона функции, возвращающей максимум из двух чисел:
Пример
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Max(i, j): 39 Max(f1, f2): 20.7 Max(s1, s2): World
шаблон класса
Точно так же, как мы определяем шаблоны функций, можно также определять шаблоны классов. Общая форма объявления обобщённого класса выглядит так:
template <class type> class class-name {
.
.
.
}
Здесь,typeЭто имя типа-заполнителя, которое можно указать при создании экземпляра класса. Можно использовать список, разделённый запятыми, для определения нескольких обобщённых типов данных.
В следующем примере определяется класс Stack<> и реализуются обобщённые методы для добавления и извлечения элементов:
Пример
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
7 hello Exception: Stack<>::pop(): empty stackДругие расширения