我定义了一个包含整数 vector 的结构。然后我在 vector 中插入 10 个整数并检查结构的大小。但我看不出有什么不同。
这是我的代码:
struct data
{
vector<int> points;
}
int main()
{
data d;
cout << sizeof(d) << endl;
for (int i=0; i< 10; ++i)
d.points.push_back(i)
cout << sizeof(d) << endl;
在这两种情况下,我得到相同的结果:16
为什么会这样? struct 的大小不应该增长吗?
最佳答案
vector
会将其元素存储在动态分配的内存中(在堆上)。在内部,这可能表示为:
T* elems; // Pointer memory.
size_t count; // Current number of elements.
size_t capacity; // Total number of elements that can be held.
因此 sizeof(std::vector)
在计算 sizeof
其包含的成员时不受其包含的元素数量的影响(在这个简单的示例中大致 sizeof(T*) + (2 * sizeof(size_t))
).
关于c++ - 为什么尽管有一个 int vector ,但结构的大小不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528855/