gpt4 book ai didi

c++ - 如何在 C++ 中分配可变参数/变量参数

转载 作者:行者123 更新时间:2023-12-05 01:05:00 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,以使用可变参数/可变输入参数为多个(标量)参数分配默认值或输入值:

void set_params(const vector<double> &input, int n, ...) {  
va_list args;
va_start (args, n);
for (int i = 0; i < n; i++) {
if (i < input.size()) {
va_arg(args, int) = input[i];
}
}
va_end(args);
}

int a = 1, b = 2, c = 3;
set_params({10, 20}, 3, a, b, c);

但是,我在赋值 va_arg(args, int) = input[i] 上遇到错误。是否有可能以某种方式使用可变参数进行赋值,或者有更好的方法来实现这一点?

最佳答案

C++ 没有使用 C 的 va_ 东西,而是拥有自己的可变参数模板参数,which you should preferably use

我不是这方面的专家,但它可能看起来有点像

#include <vector>
#include <iostream>

template <typename... Arg>
void set_params(const std::vector<double> &input, Arg&... arg) {
unsigned int i{0};
(
[&] {
if (i < size(input)) {
arg = input[i++];
}
}(), // immediately invoked lambda/closure object
...); // C++17 fold expression
}

int main() {
int a = 1, b = 2, c = 3;
set_params({10, 20}, a, b, c);

std::cout
<< a << ' '
<< b << ' '
<< c << '\n';
}

关于c++ - 如何在 C++ 中分配可变参数/变量参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71204325/

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