C++如何获取父数据类型的大小? 我有一个包含结构B的结构A。 我想在里面有一个int 结构B以保持结构A的大小。 但是,结构B有一个 在任何时候都可能不同的未知大小的向量。 易变的 vector将不断更改结构A的大小。
在不创建指针的情况下,我该如何做呢C++如何获取父数据类型的大小? 我有一个包含结构B的结构A。 我想在里面有一个int 结构B以保持结构A的大小。 但是,结构B有一个 在任何时候都可能不同的未知大小的向量。 易变的 vector将不断更改结构A的大小。,c++,vector,struct,sizeof,volatile,C++,Vector,Struct,Sizeof,Volatile,在不创建指针的情况下,我该如何做呢 struct A { struct B { std::vector<int> some_Vector; // unknown size size_t A_size = ????; // must always return the total size of A }; B struct_B; }; sizeof给出的向量本身的大小是恒定的,并且不受它
struct A {
struct B {
std::vector<int> some_Vector; // unknown size
size_t A_size = ????; // must always return the total size of A
};
B struct_B;
};
sizeof给出的向量本身的大小是恒定的,并且不受它所包含的元素数量的影响。区分其逻辑大小和物理大小。毕竟,sizeofstd::vector必须计算为某种值,并且向量中没有任何对象,根本没有向量。向量的内容只影响成员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给出的向量本身的大小是恒定的,并且不受它所包含的元素数量的影响。区分其逻辑大小和物理大小。毕竟,sizeofstd::vector必须计算为某种值,并且向量中没有任何对象,根本没有向量。向量的内容只影响成员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{} {
}
不过,坦率地说,我看不出有什么理由有人想要捕获结构的大小,并在运行时保留它。正如我已经说过的,它是常量。而不创建指针吗?vector可能是用指针实现的,请参阅。使用函数。sizeofsome_vector永远不会更改。我怀疑你有一个XY问题,看:你的假设,易变向量会不断改变结构A的大小。这是错误的。std::vector的字节大小是恒定的,因为它将数据保存在动态内存中,并且只保存指向其数据开始和大小或开始和结束的指针,而不创建指针?vector可能是用指针实现的,请参阅。使用函数。sizeofsome_vector永远不会更改。我怀疑你有一个XY问题,看:你的假设,易变向量会不断改变结构A的大小。这是错误的。std::vector的字节大小是恒定的,因为它将数据保存在动态内存中,并且只保存指向其数据开始和大小或开始和结束的指针