c++ - 提供的参数数量少于函数所需的函数调用是否可能?
问题描述
我正在制作一个函数,最多可以添加 4 个整数。如果我将 4 个 int 参数传递给函数并且函数将添加它们,一切都会正常工作。但是如果我传递的参数数量较少,编译器就会出错。所以我想问是否有任何可能的方法可以让函数的参数数量少于定义的数量,并且该函数仍然在给定的参数上执行它的任务?
例如(单个函数最多可以添加 4 个整数。但如果给定 3 个参数,它仍然会添加它们)Nromal/Max:
int a=5,b=6,c=7,d=8;
int sum (a,b,c,d);
更少的 arg:'''
int a=5,b=6,c=7;
int sum(a,b,c)
输出:正常/最大值 = 26 减去 arg = 18;PS:这里的 sum 函数是一个单一的函数,它输出给定的 int 参数的总和。
解决方案
在 C++17 中有一种简单的方法可以使用折叠表达式来做到这一点:
template<class... Args>
auto sum(Args... args) {
return args + ... + 0;
}
您将能够使用任意数量的可添加参数来调用它(例如,您可以混合整数和浮点数)。被Args...
称为模板参数包,并且args + ... + 0
基本上扩展为firstarg + secondarg + ... + lastarg + 0
(在您传递 0 个参数的情况下为零。)
推荐阅读
- javascript - Sequelize bulkCreate 更新表中的空值
- xml - 使用样式表操作 XML 文件。根据引用的项目更改属性值
- firebase - 不实时加载值
- mysql - FOREIGN KEY (`shiftid`, `groupid`, `sectionid`) REFERENCES `tbl_academic`(`id`, `id`, `id`) 在 mysql 数据库中不起作用
- sql - concat() 的 Oracle 问题
- c - 使用 fprintf 的错误,它以某种方式首先将后面的行而不是前面的行打印到文本文件中
- python - 如何处理数据框中可变数量的列
- python - 如何在python中查找目录及其子目录中的所有符号链接
- javascript - clearInterval()-JavaScript 中的方法 - 它究竟是如何工作的?
- java - Docker连接被拒绝错误Spring boot + MariaDB