带有模板的容器声明

Container declaration with template

本文关键字:声明      更新时间:2023-10-16

这两个语句的字面意思是什么?它们只是两个初始化还是其他什么?

template <class T, size_t N> class array;
template <class T, class Alloc = allocator<T>> class deque;

正如您给出的两个已知类,即array&deque,所以可以详细地告诉你这些语法的含义。这是因为我们知道它们是如何实现的。

第一种情况:语句告诉程序员需要两个输入来创建array类型的对象。例如:-

array<int, 5> a;   // creates an array of 5(ie N) integers(ie T)

我们可以评论这件事,因为我们知道array是什么。类似地,对于deque,我们可以有:-

deque<int, SomeAllocator> d;     // creates a deque container of integers(ie T) having a custom allocator named SomeAllocator (which must be an allocator of integers)

因为你是一个新手,所以最好假设allocator是另一个类,它将allocate空间,create对象,destroy对象&最后CCD_ 10空间。

我们可以再次对上面的内容发表评论,因为我们知道deque是什么。但是,如果你写这样的东西:-

template <class T, size_t N> class A;
template <class T, class Alloc = allocator<T>> class D;

然后,代码只意味着A<> parenthesis中接受两个参数的两个声明:一个数据类型(意味着任何类型,如intdoublesome class等)&一个CCD_ 17型&CCD_ 18还采用两个参数:一个数据类型(同样是任何类型)&该数据类型的CCD_ 19。

它们为类声明(但不定义)两个模板。在第一种情况下,模板参数是任意类型(可能是数组元素的类型)和数字(可能是阵列元素的数量)。在第二种情况下,模板参数都是类型,但第二种类型有默认值(取决于第一种类型)。