iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C++ 函数默认参数和可变参数在 Lambda 表达式中的应用
  • 430
分享到

C++ 函数默认参数和可变参数在 Lambda 表达式中的应用

c++ 2024-04-22 15:04:23 430人浏览 薄情痞子
摘要

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

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

C++ 函数默认参数和可变参数在 Lambda 表达式中的应用

Lambda 表达式是一种匿名函数,它允许在运行时创建函数。我们可以使用默认参数和可变参数来增强 Lambda 表达式的功能。

默认参数

默认参数允许我们为 Lambda 表达式的参数指定默认值。如果调用时未提供参数,将使用默认值。

c++lass='brush:c++;toolbar:false;'>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 <p><strong>可变参数</strong></p><p>可变参数允许我们传递数量不定的参数给 Lambda 表达式。可变参数必须是函数参数中的最后一个参数,并且使用 <code>...</code> 表示。</p><pre class='brush:c++;toolbar:false;'>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<string>& strings,
                   string defaultPrefix = "",
                   string defaultSuffix = "") {
  for (const auto& str : strings) {
    cout << defaultPrefix << str << defaultSuffix << endl;
  }
}

int main() {
  vector<string> 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 suffix
John
Mary
Bob

以上就是C++ 函数默认参数和可变参数在 Lambda 表达式中的应用的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: C++ 函数默认参数和可变参数在 Lambda 表达式中的应用

本文链接: https://www.lsjlt.com/news/607393.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作