微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,它是完全独立的数据类型.

原文地址:https://www.jb51.cc/c/119738.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐