所以我有一个带有可变长度参数列表的函数,例如:
int avg(int count,...){
//stuff
}
我可以用avg(4,2,3,9,4);
调用它,它运行正常。它需要保持这种功能。
我有没有办法用数组调用它而不是列出变量?例如:
avg(4,myArray[5])
这样功能avg
没有看到任何差异?
答案 0 :(得分:4)
不,没有这样的方法。但是,您可以创建两个函数,一个采用可变数量的参数,另一个采用数组(或者更好的是std::vector
)。第一个函数只是将参数打包到数组(或向量)中并调用第二个函数。
答案 1 :(得分:3)
void f() {}
template<typename T, std::size_t N>
void f(T array[N])
{
}
template<typename T, typename... Args>
void f(const T& value, const Args&... args)
{
process(value);
f(args...);
}
答案 2 :(得分:2)
没有。由于指针本质上是无符号整数,因此无法区分内存地址和无符号整数。或者(我确信你想避免),你必须这样做:
avg( 4, myArray[ 0 ], ..., myArray[ 3 ] );
...其中...
位于myArray
位置1和2 如果您想要使用与上一个函数相同的参数。还有其他方法可以做到这一点,例如使用C ++向量。