考虑一个类:
template <typename T>
struct A{
//...many public member functions...
T x;
T y;
T z;
}
还有一个类似的:
template <typename T>
struct B{
//many public member functions
T x;
T y;
}
虽然此处未指定,但T
始终为float
orint
或bool
。
现在考虑另一个结构:
struct Pair{
A<float> a;
B<float> b;
}
现在一个vector
:
std::vector<Pair> bigBunch;
假设所有x
, y
, z
inbigBunch
将是连续的有多安全?我知道这vector
保证了它Pair
的 s 之间的连续内存,但我也知道这struct
并不一定保证连续内存,因为可能会发生填充。struct
但是,我认为只有当您的元素是不同类型时,填充才是一种风险。
我希望能够获得一个指针bigBunch[0].a.x
,然后知道我可以期望float
s 的整个内容中有一个连续的流bigBunch
。实际上,指向的指针与bigBunch[0].a.x
刚才说的指向同一个地方`bigBunch[0].a
。
Pair.a
和是相同类型还是不同类型是否重要Pair.b
,例如混合int
sfloat
而不是两者都是相同类型(float
在本例中)?