クラスを考えてみましょう:
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またはintまたはのいずれかになりますbool。
ここで別の構造体を考えてみましょう:
struct Pair{
A<float> a;
B<float> b;
}
今vector:
std::vector<Pair> bigBunch;
xすべての, y, zinbigBunchが連続していると仮定するのはどのくらい安全ですか? vectors間の連続したメモリを保証することは知っていますが、パディングが発生する可能性があるため、必ずしも連続したメモリを保証するとは限らないPairことも知っています。ただし、パディングは、要素のタイプが異なるstruct場合にのみリスクになると思いました。struct
へのポインターを取得して、 のコンテンツ全体bigBunch[0].a.xで s の連続したストリームが期待できることを知りたいです。実際、へのポインターは、単に と言うのと同じ場所を指します。floatbigBunchbigBunch[0].a.x`bigBunch[0].a
Pair.aとが同じタイプであるか異なるタイプであるか (この例では両方が同じタイプであるのではなく、s をPair.b混合するなど) は問題になりますか?intfloatfloat