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(){
//你的密码在这里

难道这是我很久以来见过的最美的东西吗。