以下语法代表什么?
typedef UserArray<T,W,L,H> MyType;
其中:
任何人都可以用上述声明的例子来解释我吗?
这个概念是否属于STL?
答案 0 :(得分:4)
UserArray
是一个带有四个模板参数的类模板。
它可能是这样定义的:
template<class T, int W, int L, int H> // parameter names might differ
class UserArray
{
// ...
};
typedef
用于定义类型的别名。这样:
typedef UserArray<T,W,L,H> MyType;
使用指定的模板参数为UserArray
定义别名。 T
必须是类型,W
,L
和H
必须是编译时整数常量。生成的别名称为MyType
,使用它就像使用具有相同参数的UserArray
一样。
当在很多地方使用很多类型时,这些技术用于简化键入。例如,您可以这样做:
typedef std::vector<int> IntVector;
IntVector vect; // a vector of ints
答案 1 :(得分:1)
UserArray
应该是容器 class template
,如下所示:
template<typename TYPE, unsigned int SIZE, int LOWER_BOUND, int HIGHER_BOUND>
class UserArray {
//...
};
因此,如果您将其声明为,
typedef UserArray<int,100,0,99> MyType;
这意味着MyType
是一个100
int
的数组;它的下限是0
,上限是99
。因此,类型应在0
到99
的范围内播放。但是,我不认为需要更低和更高的界限;因为数组大小陈述了一切。