c – 为什么他使用“typedef vector :: size_type”而不是使用“int”

前端之家收集整理的这篇文章主要介绍了c – 为什么他使用“typedef vector :: size_type”而不是使用“int”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是学习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,它是完全独立的数据类型.

猜你在找的C&C++相关文章