C++14:通过make_index_sequence实现将vector转换为tuple

#include 
#include 
#include 

using namespace std;

template
auto v2t(const auto& v, index_sequence)
{
    return make_tuple(v[I]...);
}
 
template
auto makeTupleFromVector(const vector& v)
{
    return v2t(v, make_index_sequence()); 
}

void f1(int a1, int a2, int a3)
{
    cout<& t)
{
    auto [a1, a2, a3] = t;
    cout< d{1, 2, 3};
    auto t = makeTupleFromVector<3>(d);
    apply(f1, t);
    f2(t);
    return 0;
}

运行程序输出:

1 2 3
1 2 3

可以看到vector确实被转换为了tuple,并可以通过apply完成调用

你可能感兴趣的:(C/C++,c++)