模板声明说明

时间:2010-11-06 17:13:57

标签: c++ templates stl

我正在查看C ++ STL矢量模板代码,以准确理解它是如何实现的。 我对模板编程有非常基本的了解,你能否清楚地解释一下表达式

typename _Alloc = std::allocator<_Tp> 

从STL向量摘录如下:

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

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这会为模板参数指定一个默认类型,这样您就不必在创建向量时添加它:

std::vector<int> v;

默认情况下,模板的第二个参数由std::allocator<_Tp>类型填充。

默认模板参数允许通过包含一些默认功能来缩短数据声明(您可以通过简单地为模板声明提供第二个参数来覆盖它)。

答案 1 :(得分:1)

类模板参数可以具有默认参数,就像函数允许您具有函数参数的默认参数一样。

这允许您只使用单个模板参数(值类型)std::vector,而不必显式指定分配器,因为大多数情况下您都需要默认分配器。

std::vector<int>

完全相同
std::vector<int, std::allocator<int> >