说我有这样的结构:
struct vertexNodeInfo
{
unsigned char level;
int node;
double leaf;
};
如果我有这个:
vector<vertexNodeInfo> node;
在任何.size
之前,空向量有多大(内存方式,而不是push_back
)?它是否与vector<int> node;
完全相同(再次,在内存方面)?
答案 0 :(得分:1)
没有要求。更重要的是,这是一个配置不当的问题。
向量的.size
为0
,因为它没有元素。
sizeof
不会影响元素的数量,并且通常足够大以包含一个或两个指向该类型的指针(其大小本身可能不同,因此无法保证{{1} }和sizeof(vector<vertexNodeInfo>)
相等),大小和容量。
答案 1 :(得分:1)
正如Luchian所说,sizeof(vector<int>) == sizeof(vector<vertexNodeInfo>)
可能但不是必需的。
此外,我不相信该标准对默认初始化向量的capacity
有任何要求:
Initial capacity of vector in C++
所以它允许容量为10,这意味着它已预先为10个元素分配了足够的内存。那么这个分配的大小当然取决于元素的大小。你没有确切地定义“你有多大,记忆力大”的含义,但是如果你想包含动态分配,那么这就是一个。
我认为这不是vector
的好实现,但它符合标准。