0

假设我有一个这样的结构:

struct vertexNodeInfo
{
    unsigned char level;
    int node;
    double leaf;
};

如果我有这个:

vector<vertexNodeInfo> node;

.size在 any 之前,空向量有多大(内存方面,不是) push_back?它的大小(再次,就内存而言)是否与 完全相同vector<int> node;

4

2 回答 2

1

没有要求。更重要的是,这是一个表述不当的问题。

向量的.size将是0,因为它没有元素。

不影响元素的sizeof数量,并且通常足够大以包含指向类型的一两个指针(它们本身的大小可能不同,因此不能保证sizeof(vector<vertexNodeInfo>)sizeof(vector<int>)相等)、大小和容量。

于 2013-11-02T08:43:48.573 回答
1

正如 Luchian 所说,很可能但不是必需的sizeof(vector<int>) == sizeof(vector<vertexNodeInfo>)

此外,我不相信该标准对capacity默认初始化向量的 有任何要求:

C++中向量的初始容量

所以它的容量是 10 是允许的,这意味着它已经为前面的 10 个元素分配了足够的内存。那么这个分配的大小当然取决于元素的大小。您并没有准确定义“内存大小”是什么意思,但是如果您的意思是包括动态分配,那么这就是其中之一。

我认为这不是一个很好的实现vector,但它符合标准。

于 2013-11-02T10:47:20.837 回答