РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
710 of 815 menu

Шаблон псевдонима

Шаблон псевдонима alias template вводит новое имя для семейства типов, зависящих от параметров шаблона. В отличие от typedef, шаблон псевдонима может принимать собственные параметры шаблона и подставлять их в уже существующий шаблон. В первом параметре объявления мы указываем имя нового псевдонима, далее в угловых скобках перечисляем параметры шаблона, а после знака '=' записываем тип, для которого вводится сокращение.

Синтаксис

template <typename T> using Alias = ExistingTemplate<T>;

Пример

Давайте введём псевдоним Vec для шаблона std::vector с произвольным типом элементов:

#include <iostream> #include <vector> using namespace std; template <typename T> using Vec = vector<T>; int main() { Vec<int> v = {1, 2, 3, 4, 5}; for (int x : v) { cout << x << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте введём псевдоним StrMap для словаря, где ключ - строка, а значение - произвольный тип:

#include <iostream> #include <map> #include <string> using namespace std; template <typename V> using StrMap = map<string, V>; int main() { StrMap<int> m; m["a"] = 1; m["b"] = 2; m["c"] = 3; cout << m["a"] << " " << m["b"] << " " << m["c"] << endl; return 0; }

Результат выполнения кода:

1 2 3

Пример

Давайте введём псевдоним Func для указателя на функцию, принимающую два аргумента типа T и возвращающую T:

#include <iostream> using namespace std; template <typename T> using Func = T(*)(T, T); int add(int a, int b) { return a + b; } int main() { Func<int> f = add; cout << f(2, 3) << endl; return 0; }

Результат выполнения кода:

5

Смотрите также

  • ключевое слово template,
    которое объявляет шаблон
  • ключевое слово typename,
    которое задаёт параметр-тип шаблона
  • шаблон класса,
    который описывает семейство классов
  • шаблон переменной,
    который описывает семейство переменных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить