gpt4 book ai didi

c++ - 如何将容器的内容传递给 C++ 中的可变参数函数

转载 作者:行者123 更新时间:2023-11-30 03:21:53 24 4
gpt4 key购买 nike

假设我们有一个用于现有类型 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]

如何将容器(数组、 vector 、迭代器等)的内容作为参数传递给 C++ 中的可变参数函数?有可能吗?

最佳答案

C++ 中的可变参数列表是在编译时建立的,而不是在运行时建立的,所以如果有的话,你只能传入一个固定长度的项目数组。

您可以使用 std::apply() 调用带有参数的 tuple 的函数。你可以create a tuple from a fixed size array .

或者,您也可以创建自己的类似apply 的模板辅助函数,该函数从数组的元素递归地组装一个参数包并为您调用该函数,或者使用无数的标准库中的元编程助手为您完成。

关于c++ - 如何将容器的内容传递给 C++ 中的可变参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com