-
向量本身的大小(如下所示
sizeof
)是常量,并且不受其包含的元素数量的影响。区分其“逻辑大小”和“物理大小”。毕竟
sizeof(std::vector<int>)
必须求值为某个值,并且向量中没有任何对象,根本没有向量。向量的内容只影响成员返回的值
std::vector::size
.
-
所以每个结构的大小都是恒定的。您只需要在两个结构都被完全定义之后获得它。您可以使用构造函数来实现这一点。而不是默认的初始值设定项。
struct A {
struct B {
std::vector<int> some_Vector;
size_t A_size;
B();
};
B struct_B;
};
A::B::B() : A_size{sizeof(A)}, some_Vector{} {
}
不过,坦率地说,我看不出有什么理由有人想抓住
sizeof公司
结构,并在运行时保持不变。正如我已经说过的,它是恒定的。