Объяснение объявления шаблона - PullRequest
1 голос
/ 06 ноября 2010

Я смотрел на векторный шаблон кода C ++ STL, чтобы понять, как именно он реализован. У меня есть базовое понимание программирования шаблонов, не могли бы вы дать четкое объяснение выражения

typename _Alloc = std::allocator<_Tp> 

выдержка из вектора STL, как показано ниже:

template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
class vector : protected _Vector_base<_Tp, _Alloc>

Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 06 ноября 2010

Это назначает тип по умолчанию для параметра шаблона, так что вам не нужно добавлять его при создании вектора:

std::vector<int> v;

По умолчанию второй параметр шаблона заполняетсятип std::allocator<_Tp>.

Параметры шаблона по умолчанию позволяют сократить объявления данных за счет включения некоторых функций по умолчанию (которые можно переопределить, просто указав второй параметр для объявления шаблона).

1 голос
/ 06 ноября 2010

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

Это позволяет вам использовать std::vector только с одним аргументом шаблона, типом значения, без необходимости явно указывать распределитель, поскольку в большинстве случаев вам все равно нужен распределитель по умолчанию.

Это

std::vector<int>

точно так же, как

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