Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解printSeq实现中的模板(…类=分配器…) 我正在学习C++中的模板。我所知道的是我从阅读第1部分和第2部分中得到的_C++_Templates_Stl - Fatal编程技术网

了解printSeq实现中的模板(…类=分配器…) 我正在学习C++中的模板。我所知道的是我从阅读第1部分和第2部分中得到的

了解printSeq实现中的模板(…类=分配器…) 我正在学习C++中的模板。我所知道的是我从阅读第1部分和第2部分中得到的,c++,templates,stl,C++,Templates,Stl,我没有读过很多关于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.e

我没有读过很多关于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子句template。type1是类T,该类将在定义的其余部分用名称T标识

类型2是模板类Seq

这个type2也是一个模板类。这就是为什么他们使用模板类Seq

在模板中,我们再次使用表单模板。这里type3是类U,一个用名称U标识的类

我不理解的部分是class=allocator。我想编译器首先会知道U的实际类型,它可以“实例化”这是正确的术语吗?获取类型分配器的模板分配器!?。但是有一个问题

问题:

=分配器将返回类型是否正确? 在这个建筑中,工程师是如何工作的? 我的问题似乎更多地与分配器有关。我在哪里可以读到我所缺少的东西?我在读,但还是不明白=。
Seq是一个模板参数,=allocator提供了一个默认的模板参数,因此当您编写Seq时,它实际上是Seq。不过,这绝对不是我编写函数的方式。@T.C.噢!!!这就像他们编写了模板类Seq一样。我刚刚试过,它编译并运行了。我忽略了可以在模板参数中跳过名称V的事实。我只是在我阅读的关于模板的调查中进行了检查。他们没有提到在默认模板参数中跳过标识符的可能性。谢谢