std::tuple を指定すると、次のようになります。
std::tuple<int, float, char>
次のようなタイプを生成したいと思います。
std::tuple<std::vector<int>, std::vector<float>, std::vector<char>>
ご覧のとおり、元の型のベクトルのタプルです。標準的なシナリオは次のとおりです。
typedef std::tuple<int, float, char> Struct; // scenario 1
typedef std::vector<Struct> ArrayOfStructs; // scenario 2
typedef HereIsTheQuestion<Struct>::Type StructOfArrays; // scenario 3
シナリオ 1 は、次のようにアクセスすることを意図しています。
Struct x = ...; // single tuple
std::get<0>(x) = 11;
// etc.
シナリオ 2 は、次のようにアクセスすることを意図しています。
ArrayOfStructs xs = ...; // array of tuples
for (size_t i=0; i<xs.size(); ++i) {
std::get<0>(xs[i]) = 11;
// etc.
}
シナリオ 3 は、次のようにアクセスすることを意図しています。
StructsOfArrays xs = ...; // single tuple of arrays
size_t n = std::get<0>(xs).size(); // first tuple array size
for (size_t i=0; i<n; ++i) {
std::get<0>(xs)[i] = 11;
// etc.
}
HereIsTheQuestion::Type を元の Struct 型の配列のタプルに似せるには、どのように記述する必要がありますか?
ありがとう、M.