如何将容器的内容传递给 C++ 中的可变参数函数
How to pass the contents of a container to a variadic function in C++
假设我们有一个针对现有类型 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++ 中的可变参数函数?有可能吗?
C++中的可变参数列表是在编译时建立的,而不是在运行时建立的,所以如果有的话,你只能传入一个固定长度的项目数组。
您可以使用 std::apply()
调用具有 tuple
个参数的函数。你可以 .
或者,您也可以创建自己的类似于 apply
的模板辅助函数,该函数从数组元素递归地组装参数包并为您调用该函数,或者使用无数的元编程之一标准库中的助手为您完成。
假设我们有一个针对现有类型 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++ 中的可变参数函数?有可能吗?
C++中的可变参数列表是在编译时建立的,而不是在运行时建立的,所以如果有的话,你只能传入一个固定长度的项目数组。
您可以使用 std::apply()
调用具有 tuple
个参数的函数。你可以
或者,您也可以创建自己的类似于 apply
的模板辅助函数,该函数从数组元素递归地组装参数包并为您调用该函数,或者使用无数的元编程之一标准库中的助手为您完成。