【发布时间】:2011-11-29 23:34:15
【问题描述】:
我刚开始学习 C++,有一个关于向量的问题。 我正在阅读的书指出,如果我想提取 double 类型的向量的大小(例如),我应该这样做:
vector<double>::size_type vector_size;
vector_size = myVector.size();
而在 Java 中我可能会这样做
int vector_size;
vector_size = myVector.size();
我的问题是,为什么会有一个名为 vector::size_type 的类型?为什么 C++ 不只使用 int?
【问题讨论】:
-
在 C++11 中,你可以说
auto vector_size = myVector.size();并少一些担心 ;) -
@FredOverflow 如果您将
vector_size初始化为0但您打算将其用作vector<double>::size_type,这并不好。 -
@BrianGordon 我不明白你的反对意见。如果
myVector是std::vector<double>类型,而你写auto vector_size = myVector.size();那么vector_size是std::vector<double>::size_type类型,无论向量是否为空。请澄清。 -
如果你有
for(std::vector<double>::size_type i=0; i<myVector.size(); i++)那么auto不能用来声明i。