我只是学习C而且我正在使用Accelerated C.
在向量示例中,编写器使用以下代码;
typedef vector<double>::size_type vec_sz; vec_sz size = homework.size;
我知道typedef vector< double> :: size_type vec_sz;这样他就不必将下一个命令写为vector< double> :: size_type size = homework.size;,但我的问题是为什么他不将大小声明为整数?
int size = homework.size;
这是因为我们正在使用矢量吗?
如果是这样,这是否意味着向量迭代器返回的值不能存储在常规变量中?
解决方法
why didn’t he just declare size as an integer?
因为整数不是存储矢量大小的正确类型,原因有两个:
> int允许为负数;矢量的大小是非负的
>即使是无符号整数也可能不足以保持最大向量大小
int适用于小向量,但对于一般方法,你应该使用vector< T> :: size_type.请注意,该类型是无符号的,因此在按索引迭代到前面时需要小心.
does that mean that the values returned by vector iterators cannot be stored in regular variables?
迭代器不是vector vector< T> :: size_type,它是完全独立的数据类型.