我刚刚开始学习 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++ 是一种用于库编写的语言*,允许作者尽可能通用是其关键优势之一。更通用的方法不是规定标准容器使用任何特定的数据类型,而是规定每个容器公开一个size_type
会员类型。这允许更大的灵活性和通用性。例如,考虑以下通用代码:
template <template <typename...> Container, typename T>
void doStuff(const Container<T> & c)
{
typename Container<T>::size_type n = c.size();
// ...
}
这段代码将适用于any容器模板(可以使用单个参数实例化),并且我们不会对代码的用户施加任何不必要的限制。
(实际上,大多数尺寸类型将解析为std::size_t
,这又是一个无符号类型,通常unsigned int
or unsigned long
——但是为什么我们必须知道这一点呢?)
*) I'm not sure what the corresponding statement for Java would be.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)