2009-07-20 61 views
0
typedef vector<double>::size_type vec_sz; 
vec_sz size = homework.size(); 

回答

5

的第一行vector<double>::size_type类型的creates an alias。关键字typedef通常用于制作通常比原始文件短的“新”数据类型名称,或者对于给定的应用程序具有更清晰的名称。

第二行之后应该是不言自明的。

5

如果您了解STL容器的基本知识,它们就是您的老师给您测试的示例行。

+5

haha​​ha ...失败! – Toad 2009-07-20 08:07:00

+1

该代码来自Accerelated C++一书,3.2.2生成输出,而不是作业。 – 2009-07-20 08:10:46

3

的typedef 高清 INES一个这样你至少可以在这个例子中使用这个新名称,而不是更长的旧的。然后定义一个可变大小,它的类型是刚刚定义的类型。最后,这个大小变量的值被设置为作业对象的大小,可能也是一个向量。

2

vector<double>::size_type已经typedef为一个整数类型(此全文“如果我的‘双师型’元素的向量,你会怎样使用它的大小?”

Typedef'ing它进一步vec_sz有意义的缩短的类型名称。因此,

vec_sz size; 

等效于:

vector<double>::size_type size; 

这相当于任何积分类型用于尺寸,例如

unsigned long size; 
1

该类矢量为size_type发布typedef。您的第一行重新定义为短符号vec_szvector还定义了成员函数size()作为返回size_type

0

好了,里面矢量<>的声明,你会发现这一点:

的typedef unsigned int类型SIZE_TYPE; (它实际上取决于你的实现,所以它可能不是unsigned int)。

所以现在你在vector中有一个size_type类型。

“typedef vector :: size_type vec_sz;”现在可以这样说:

typedef unsigned int vec_sz;

现在“vector :: size_type”是“unsigned int”的同义词,请记住size_type是一个类型,而不是变量。

vec_sz size = homework.size();

等于:

矢量:: size_type的大小= homework.size();

Wich等于:

unsigned int size = homework。尺寸();

希望很清楚:P