未知数量的函数参数 c++
Unknown number of function parameters c++
例如,我需要计算 3、5、10 或更多数字的平均值(我不知道确切数字的函数如下:
double average(/* Unknown number of parameters here */) {
}
所以,我需要统计参数个数和参数总和的方法。我是 c++ 的新手,我将不胜感激。
你可以这样编码。详情如下:http://www.tutorialspoint.com/cprogramming/c_variable_arguments.htm
#include <stdio.h>
#include <stdarg.h>
double average(int num,...)
{
va_list valist;
double sum = 0.0;
int i;
va_start(valist, num); // initialize valist
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);
}
va_end(valist); // clean memory
return sum/num;
}
int main()
{
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}
另一种基于可变参数模板的解决方案。优点:无需指定参数个数。
double sum(double value)
{
return value;
}
template<typename... Rest>
double sum(double first, Rest... rest)
{
return first + sum(rest...);
}
template<typename... Args>
double average(Args... args)
{
return sum(args...) / sizeof...(Args);
}
您可以使用初始化列表。
double average(std::initializer_list<int> i){...}
例如,我需要计算 3、5、10 或更多数字的平均值(我不知道确切数字的函数如下:
double average(/* Unknown number of parameters here */) {
}
所以,我需要统计参数个数和参数总和的方法。我是 c++ 的新手,我将不胜感激。
你可以这样编码。详情如下:http://www.tutorialspoint.com/cprogramming/c_variable_arguments.htm
#include <stdio.h>
#include <stdarg.h>
double average(int num,...)
{
va_list valist;
double sum = 0.0;
int i;
va_start(valist, num); // initialize valist
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);
}
va_end(valist); // clean memory
return sum/num;
}
int main()
{
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}
另一种基于可变参数模板的解决方案。优点:无需指定参数个数。
double sum(double value)
{
return value;
}
template<typename... Rest>
double sum(double first, Rest... rest)
{
return first + sum(rest...);
}
template<typename... Args>
double average(Args... args)
{
return sum(args...) / sizeof...(Args);
}
您可以使用初始化列表。
double average(std::initializer_list<int> i){...}