使用 std::tuple 构造基于向量的数据集是指可变变量模板

using std::tuple to construct a vector-based dataset refer to variadic-templates

本文关键字:数据集 变量 向量 tuple std 于向量 使用      更新时间:2023-10-16

我想制作一个如下所示的类模板:

template < typename... Args > class VectorTuple;

通过示例,

VectorTuple < long, double, string >

将实例化为

Tuple < vector < long >, vector < double > , vector < string > >

我不熟悉可变模板。最糟糕的方法是从元组>复制代码并对其进行修改<。有没有一种简单的方法可以直接使用 std::tuple 来定义我的 VectorTuple。

如果您正在寻找typedef variadic-templates类型,那么,

template<typename... Args>
using VectorTuple = std::tuple<std::vector<Args>...>;

现在你可以像使用它一样

VectorTuple<long, double, std::string> obj;

您可以使用参数包扩展将可变参数模板参数包T...转换为 std::vector<T1> 、...、 std::vector<Tn> 。然后,使用 template<...> using 定义模板别名。

#include <vector>
#include <tuple>
template<typename... Ts> using VT = std::tuple< std::vector<Ts>... >;    
void foo()
{
    VT<int, float, double> x;
    std::tuple< std::vector<int>, std::vector<float>, std::vector<double>> y = x;
}