UserArray在这里意味着什么?

时间:2011-07-13 03:32:54

标签: c++ templates stl

以下语法代表什么?

typedef UserArray<T,W,L,H> MyType;

其中:

  • T =数组元素的类型
  • W =数组元素的宽度,0 < W&lt; 8
  • L =数组索引的下限(优选为零)
  • H =数组索引的高限

任何人都可以用上述声明的例子来解释我吗?

这个概念是否属于STL?

2 个答案:

答案 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必须是类型,WLH必须是编译时整数常量。生成的别名称为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。因此,类型应在099的范围内播放。但是,我不认为需要更低和更高的界限;因为数组大小陈述了一切。