想象一下,对于现有的T类型,我们有一个可变参数void foo(T args...)
。
在Java(void foo(T... args)
和C#(void foo(params T[] args)
)中,传递类型为T T[]
的数组是一种将其内容作为参数传递给foo
的有效方法。
在Scala(def foo(args: T*): Unit
)中,我可以通过Seq[T]
。
如何将容器的内容(数组,向量,迭代器等)作为参数传递给C ++中的可变参数?甚至有可能吗?
答案 0 :(得分:1)
C ++中的varargs参数列表是在编译时而不是在运行时建立的,因此,如果有的话,您只能在其中传递固定长度的项数组。
您可以使用tuple
来调用带有std::apply()
参数的函数。您可以create a tuple
from a fixed size array。
或者,您也可以创建自己的类似apply
的模板帮助程序函数,该函数以递归方式从数组元素中组装参数包并为您调用该函数,或者使用来自其中的多种元编程帮助程序之一标准库为您完成。