Я реализовал класс коллекции, который преобразует вектор кортежей в кортеж векторов (по сути, это преобразование AOS в SOA).Этот код работает для этого примера двух шаблонных классов.Я пытался сделать его более универсальным, используя вариадические шаблоны.Для этого мне нужно создать тип для переменной-члена m_col
.В C ++ 17 возможно ли преобразовать кортеж в кортеж векторов?Таким образом, тип дисперсии члена m_col
в этом примере будет сгенерирован автоматически из типов шаблонов.
template<class T1, class T2>
class Collection
{
std::tuple<std::vector<T1>, std::vector<T2>> m_col;
public:
void addRow(const std::tuple<T1, T2>& data)
{
std::get<0>(m_col).push_back(std::get<0>(data));
std::get<1>(m_col).push_back(std::get<1>(data));
}
void show()
{
std::cout << std::get<0>(m_col1).size() <<std::endl;
}
};
int main()
{
using data_t = std::tuple<int, double>;
data_t data{1,1.0};
using col_t = Collection<int, double>;
col_t col;
col.addRow(data);
col.show();
}