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

标签 c++ struct sizeof

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

相关文章:

java - 通过 SWIG 在 Java 中处理 C++ 异常

c++ - 段错误 |计算阶乘 |超出索引

c++ - 你如何检查现有 Qt 安装的配置?

c - 将指针存储到数组时哪里出错了?

c++ - 你如何在 c 中交换结构数组的元素?

C 结构体中 char[] 的大小

c++ - 以提升的权限运行时如何正确检测网络驱动器

c++ - 将整数结构转换为位掩码

相当于宏的 C sizeof

c - struct_type[1] 是什么意思?