我正在学习C ++模板。 (我所知道的是我阅读this survey的第1部分和第2部分)
Haven没有详细了解STL中的容器。但是我的名单中有下一个。
我试图理解模板函数的以下定义来打印序列的元素。
template<class T, template<class U, class = allocator<U>> class Seq>
void printSeq(Seq<T>& seq) {
for (typename Seq<T>::iterator b = seq.begin(); b != seq.end();)
cout << *b++ << endl;
};
我的问题出在第一行。我认为我明白了:
有模板子句template< type1 , type2 >
。 type1
是class T
,这个类将在定义的其余部分用名称T
标识。
type2
为template<class U, class = allocator<U>> class Seq
。
此type2
也是模板类。这就是他们使用template<...> class Seq
。
在template<class U, class = allocator<U>>
我们再次提供template< type 3, type4>
表格。此处type3
为class U
,是一个名称为U
的类。
我不理解的部分是class = allocator<U>
。我想编译器首先会知道U
的实际类型,它可以实现&#39;实例化&#39; (这是正确的术语吗?)模板allocator
获取类型allocator<U>
(!?)。但是有=
。
问题:
= allocator<U>
返回某个类型是否正确? =
如何在这个结构中工作? allocator
。我在哪里可以读到我错过的内容?我正在阅读this,但我仍然不了解=
的作用。