我已经看到很多链接介绍了可变参数模板.但我从未见过任何可用于演示此方法的可编译示例.
有人可以给我提供一些可以找到这些可编辑的例子的链接吗?
我对如何通过使用可变参数模板从元组中读取每个参数感到有点困惑.
考虑这个功能:
template<class...A> int func(A...args){
int size = sizeof...(A);
.... }
Run Code Online (Sandbox Code Playgroud)
我从主文件中调用它,如:
func(1,10,100,1000);
Run Code Online (Sandbox Code Playgroud)
现在,我不知道如何扩展主体func
以便能够单独读取每个参数,以便我可以,例如,将参数存储在数组中.
我想在队列中存储一串字符串.如果我使用成员函数,这似乎很简单push()
queue test;
string s0("s0"), s1("s1");
test.push(s0);
test.push(s1);
Run Code Online (Sandbox Code Playgroud)
我正在考虑以隐式方式在队列中添加字符串.这意味着,如果我键入以下字符串序列,则operator >>
应该将队列中的字符串值推送出来.
queue test;
string s0("s0"), s1("s1");
s0 >> s1 >> s2 >> s3 ;
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
如果我想使用该功能,我可以有哪些缺点
foo(int num, ...)
Run Code Online (Sandbox Code Playgroud)
实现可变数量的参数?
我知道你只能使用一种数据类型的第一个缺点.
还有其他办法吗?
在其他主题中已经多次讨论过不建议使用可变参数函数,因为编译器无法检查提供的参数的类型.
但是,如果用户确切知道类型可以是例如std :: string,那该怎么办?这里还有什么问题吗?
问候