C++ C++;具有无限可选参数和不同输入变量选择的函数
这些问题已经思考了一段时间,但没有想到如何解决 假设我有这样一个函数:C++ C++;具有无限可选参数和不同输入变量选择的函数,c++,function,optional-parameters,C++,Function,Optional Parameters,这些问题已经思考了一段时间,但没有想到如何解决 假设我有这样一个函数: double sum( int param1 , double param2 , [ optional... ] ) { return param1 + param2; } 现在我想要 Q1:可选参数 问题2:可选参数数量不限,无需全部声明ofc 问题3:在这些可选参数中使用int和double值 提前感谢:)您要使用 其中的一个例子很容易理解,它将计算任意数量的参数的平均值。请注意,函数不知道参数的数量或类型
double sum( int param1 , double param2 , [ optional... ] )
{
return param1 + param2;
}
现在我想要
Q1:可选参数
问题2:可选参数数量不限,无需全部声明ofc
问题3:在这些可选参数中使用int和double值
提前感谢:)您要使用
其中的一个例子很容易理解,它将计算任意数量的参数的平均值。请注意,函数不知道参数的数量或类型
#include <stdarg.h>
double average(int count, ...)
{
va_list ap;
int j;
double tot = 0;
va_start(ap, count); /* Requires the last fixed parameter (to get the address) */
for(j = 0; j < count; j++)
tot += va_arg(ap, double); /* Increments ap to the next argument. */
va_end(ap);
return tot / count;
}
#包括
双平均值(整数计数,…)
{
va_列表ap;
int j;
双tot=0;
va_start(ap,count);/*需要最后一个固定参数(获取地址)*/
对于(j=0;j
如果您熟悉,则引入了一个新概念,称为;本质上,它允许你创建你提到过的函数,它可以接受不同数量的论证
声明此类函数的语法如下所示:
template <typename ... Types>
void someFunc(Types ...args) {}
模板
void someFunc(类型…参数){}
另一种选择是使用with来实现这一点,因为您已经知道将要使用的变量的类型。使用您的程序的示例如下:
#include <iostream>
#include <initializer_list>
#include <numeric>
using namespace std;
double sum( initializer_list<double> vals ) {
return accumulate(vals.begin(), vals.end(), 0.0);
}
int main() {
// your code goes here
cout << sum({2, 3, 4.6, 5, 6, 74.322, 1}) << endl;
return 0;
}
#包括
#包括
#包括
使用名称空间std;
双和(初始值设定项\列表VAL){
返回累计值(vals.begin()、vals.end()、0.0);
}
int main(){
//你的密码在这里
难道这是我很久以来见过的最美的东西吗。