gpt4 book ai didi

c++ - 为什么尽管有一个 int vector ,但结构的大小不变

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:16 24 4
gpt4 key购买 nike

我定义了一个包含整数 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com