所以我有一个接受可变长度参数列表的函数,例如:
int avg(int count,...){
//stuff
}
我可以用它来调用它,avg(4,2,3,9,4);
它工作正常。它需要维护此功能。
有没有办法让我也用数组而不是列出变量来调用它?例如:
avg(4,myArray[5])
这样该功能avg
没有任何区别?
所以我有一个接受可变长度参数列表的函数,例如:
int avg(int count,...){
//stuff
}
我可以用它来调用它,avg(4,2,3,9,4);
它工作正常。它需要维护此功能。
有没有办法让我也用数组而不是列出变量来调用它?例如:
avg(4,myArray[5])
这样该功能avg
没有任何区别?
不,没有这样的方法。但是,您可以创建两个函数,一个接受可变数量的参数,另一个接受一个数组(或者更好的是,一个std::vector
)。第一个函数只是将参数打包到数组(或向量)中并调用第二个函数。
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...);
}
不,由于指针本质上是无符号整数,因此无法区分内存地址和无符号整数。或者(我相信你想避免),你必须这样做:
avg( 4, myArray[ 0 ], ..., myArray[ 3 ] );
... where...
是myArray
在位置 1 和 2如果您想符合与前一个函数相同的参数。还有其他方法可以做到这一点,例如使用 C++ 向量。