空向量是否为其结构的大小?

时间:2013-11-02 08:38:19

标签: c++ vector struct

说我有这样的结构:

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

如果我有这个:

vector<vertexNodeInfo> node;

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

2 个答案:

答案 0 :(得分:1)

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

向量的.size0,因为它没有元素。

sizeof不会影响元素的数量,并且通常足够大以包含一个或两个指向该类型的指针(其大小本身可能不同,因此无法保证{{1} }和sizeof(vector<vertexNodeInfo>)相等),大小和容量。

答案 1 :(得分:1)

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

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

Initial capacity of vector in C++

所以它允许容量为10,这意味着它已预先为10个元素分配了足够的内存。那么这个分配的大小当然取决于元素的大小。你没有确切地定义“你有多大,记忆力大”的含义,但是如果你想包含动态分配,那么这就是一个。

我认为这不是vector实现,但它符合标准。