是其结构大小的空向量
Is an empty vector the size of its struct?
假设我有一个这样的结构:
struct vertexNodeInfo
{
unsigned char level;
int node;
double leaf;
};
如果我当时有这个:
vector<vertexNodeInfo> node;
在任何push_back
之前,空向量会有多大(内存方面,而不是.size
)?它的大小(再次,就内存而言)会与vector<int> node;
完全相同吗?
没有要求。更重要的是,这是一个表述不佳的问题。
向量的.size
是0
的,因为它没有元素。
sizeof
不会影响元素的数量,并且通常足够大,可以包含指向类型的一个或两个指针(其大小本身可能有所不同,因此无法保证sizeof(vector<vertexNodeInfo>)
和sizeof(vector<int>)
相等)、大小和容量。
正如卢基安所说,很可能但不是必需的 sizeof(vector<int>) == sizeof(vector<vertexNodeInfo>)
.
此外,我不认为该标准对默认初始化向量的capacity
有任何要求:
C++中矢量的初始容量
因此,它允许具有 10 个容量,这意味着它预先为 10 个元素分配了足够的内存。那么这个分配的大小当然取决于元素的大小。您没有确切定义"内存方面有多大"的含义,但是如果您打算包含动态分配,那么这将是其中之一。
我不认为这将是vector
的一个很好的实现,但它符合标准。
相关文章:
- 将结构向量排序为子组
- 访问存储在向量C++中的结构的多态成员
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 将 int 映射到 C++ 中的向量结构
- 如何在 c++ 中的向量结构中使用结构向量
- 无法将值存储到向量结构中
- 无法将.CSV文件读取为代表向量结构的类
- MPI,C,派生类型,向量结构
- 向量结构的打印成员
- 在 c++ 中对向量<结构 S> 进行二分搜索?
- 不需要删除向量<结构A*>
- 在C++中循环向量结构<string>
- 将字符串放入字符串的向量结构中
- 共享内存中的向量结构
- 我的向量结构没有像预期的那样迭代