您的位置:首页 > 编程语言 > C语言/C++

C++ Variadic template(可变长度参数函数)

2016-05-18 00:00 369 查看

Variadic template是c++11引入的新特性,能够用来实现可变参数长度的函数。http://www.cplusplus.com/articles/EhvU7k9E/

[code=plain]/* 递归解释省略参数时,如果只剩一个参数的时候调用该函数。*/
template <typename T1>
std::vector<T1> parse(T1 t1)
{
std::vector<T1> ts;
ts.push_back(t1);
return ts;
}
/* 递归解释省略参数时,参数个数多于一个的时候调用该函数。*/
template <typename T1, typename... T>
std::vector<T1> parse(T1 t1, T... _t)
{
std::vector<T1> ts;
ts.push_back(t1);
std::vector<T1> v = parse(_t...);
for(auto each : v)
{
ts.push_back(each);
}
return ts;
}

/*模板类,能够根据任意个参数构造得到一个数组。*/
template <int N, typename... T>
class keys
{
public:
keys() {}
keys(int k, T... _t)
{
std::vector<int> ks = parse(_t...);
for(auto each : ks)
{
std::cout<<each<<std::endl;
}
}
private:
int *_keys;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: