lambda 表达式中,默认参数允许指定参数默认值,而可变参数则允许传递数量不定的参数。默认参数应紧随必选参数,而可变参数必须是函数参数中最后一个。这些功能可以简化代码并提高可读性,例如在处理字符串列表时添加前缀和后缀。

C++ 函数默认参数和可变参数在 Lambda 表达式中的应用
Lambda 表达式是一种匿名函数,它允许在运行时创建函数。我们可以使用默认参数和可变参数来增强 Lambda 表达式的功能。
默认参数
立即学习“C++免费学习笔记(深入)”;
默认参数允许我们为 Lambda 表达式的参数指定默认值。如果调用时未提供参数,将使用默认值。
int add(int a, int b = 10) { return a + b;}int main() { auto sum = [](int a, int b) { return a + b; }; // 无默认参数 auto sumWithDefaultValue = [](int a, int b = 10) { return a + b; }; // 有默认参数 cout << sum(5, 6) << endl; // 输出: 11 cout << sumWithDefaultValue(5) << endl; // 输出: 15 return 0;}
可变参数
可变参数允许我们传递数量不定的参数给 Lambda 表达式。可变参数必须是函数参数中的最后一个参数,并且使用 ... 表示。
int sumAll(int n, ...) { va_list args; va_start(args, n); int sum = n; for (int i = 0; i < n; i++) { sum += va_arg(args, int); } va_end(args); return sum;}int main() { auto sumAllLambda = [](int n, ...) { va_list args; va_start(args, n); int sum = n; for (int i = 0; i < n; i++) { sum += va_arg(args, int); } va_end(args); return sum; }; cout << sumAll(3, 1, 2, 3) << endl; // 输出: 9 cout << sumAllLambda(4, 4, 5, 6, 7) << endl; // 输出: 22 return 0;}
实战案例
我们可以使用默认参数和可变参数来简化代码并提高可读性。例如,考虑一个处理字符串列表的函数:
void processStrings(const vector& strings, string defaultPrefix = "", string defaultSuffix = "") { for (const auto& str : strings) { cout << defaultPrefix << str << defaultSuffix << endl; }}int main() { vector names = {"John", "Mary", "Bob"}; cout << "Prefix: "Mr", Suffix: "."" << endl; processStrings(names, "Mr", "."); // 使用默认参数 cout << "Prefix: empty, Suffix: "!"" << endl; processStrings(names, "", "!"); // 只使用可变参数 cout << "No prefix or suffix" << endl; processStrings(names); // 使用所有默认值 return 0;}
输出:
Prefix: "Mr", Suffix: "."Mr.John.Mr.Mary.Mr.Bob.Prefix: empty, Suffix: "!"John!Mary!Bob!No prefix or suffixJohnMaryBob
以上就是C++ 函数默认参数和可变参数在 Lambda 表达式中的应用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1447649.html
微信扫一扫
支付宝扫一扫