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