假设我有一个这样的结构:
struct vertexNodeInfo
{
unsigned char level;
int node;
double leaf;
};
如果我有这个:
vector<vertexNodeInfo> node;
.size
在 any 之前,空向量有多大(内存方面,不是) push_back
?它的大小(再次,就内存而言)是否与 完全相同vector<int> node;
?
没有要求。更重要的是,这是一个表述不当的问题。
向量的.size
将是0
,因为它没有元素。
不影响元素的sizeof
数量,并且通常足够大以包含指向类型的一两个指针(它们本身的大小可能不同,因此不能保证sizeof(vector<vertexNodeInfo>)
和sizeof(vector<int>)
相等)、大小和容量。
正如 Luchian 所说,很可能但不是必需的sizeof(vector<int>) == sizeof(vector<vertexNodeInfo>)
。
此外,我不相信该标准对capacity
默认初始化向量的 有任何要求:
所以它的容量是 10 是允许的,这意味着它已经为前面的 10 个元素分配了足够的内存。那么这个分配的大小当然取决于元素的大小。您并没有准确定义“内存大小”是什么意思,但是如果您的意思是包括动态分配,那么这就是其中之一。
我认为这不是一个很好的实现vector
,但它符合标准。