可变参数模板
2023-02-08 10:33:56 阅读次数:258
c++
可变参数模板
template<typename... Args>
void showList(Args... args)
{...}
//Args是模板参数包,这是一个类型列表。args是函数参数包。Args与任意数量的类型匹配,如:
showList('s',30,"hello",5.5)
在可变参数模板函数中使用递归
template<typename... Args>
void showList(Args... args)
{
showList(args);
}//这样递归会导致无限递归调用
改进1
//改进1
void showList(){}
template<typename T ,typename... Args>
void showList(T value,Args... args)
{
cout<<value<<", ";
showList(args);
}
//每调动一次,参数列表就会减少一项,直到args为空时,将调用不接受任何参数的showList方法。
改进2
//以上函数在输出列表时,都会在后面增加一个逗号,现在省去最后一个逗号
//增加函数
template<typename T >
void showList(T value)
{
cout<<value<<'\n';
}
//当args中仅仅剩余一项时,会优先调用该函数。、
改进3
//引用传递
template<typename T ,typename... Args>
void showList(const T& value,const Args&... args)
{
cout<<value<<", ";
showList(args);
}
版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_15943685/6026619,作者:步_步_为营,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。
上一篇:constexpr变量、constexp函数和常量表达式
下一篇:Vue脚手架