ホームページ > バックエンド開発 > C++ > C++ ラムダ式はどのように結果を返すのでしょうか?

C++ ラムダ式はどのように結果を返すのでしょうか?

WBOY
リリース: 2024-06-04 10:24:57
オリジナル
472 人が閲覧しました

C++ ラムダ式は return ステートメントを使用して結果を返すことができます: 構文: [capture-list] (parameters) -> return-type { // Function body // return Expression } 実践的な戦闘: ラムダ式はフィルタリングに使用できます。奇数を計算し、その合計を計算します: int sum_odd = std::accumulate(numbers.begin(),numbers.end(), 0, [](int sum, int num) { if (数値 % 2 == 1) { 合計 + 数値を返します。 } 合計を返します。 });

C++ Lambda 表达式如何返回结果?

C++ ラムダ式: 結果を返すメカニズム

ラムダ式は、短くて単純なコード ブロックを表すために使用できる C++ の匿名関数です。構文で return ステートメントを使用すると、ラムダ式で結果を返すことができます。 return 语句。

语法:

[capture-list] (parameters) -> return-type {
  // 函数体
  return expression; // 返回结果
};
ログイン後にコピー

实战案例:

假设我们有一个容器 numbers,我们需要返回该容器中所有奇数的总和。我们可以使用 Lambda 表达式如下:

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};

  // 使用 Lambda 表达式过滤奇数
  int sum_odd = std::accumulate(numbers.begin(), numbers.end(), 0, [](int sum, int num) {
    if (num % 2 == 1) {
      return sum + num;
    }
    return sum;
  });

  std::cout << "奇数总和:" << sum_odd << std::endl;

  return 0;
}
ログイン後にコピー

说明:

  • 在此 Lambda 表达式中,[sum, num] 是捕获列表,它包含我们需要的外部变量。
  • (sum, num) 是参数列表,它接收两个参数:sum 为累加值,num 为容器中的当前值。
  • -> int 指定了返回类型,在本例中为 int
  • 函数体使用条件语句检查 num 是否为奇数,如果是,则将其添加到 sum 中并返回,否则返回 sum
  • 最后,std::accumulate 函数将 Lambda 表达式用作二元运算符,将容器中的所有奇数累加到 sum_odd
構文:

rrreee🎜🎜実際のケース: 🎜🎜🎜コンテナ numbers があり、コンテナ内のすべての奇数の合計を返す必要があるとします。 Lambda 式は次のように使用できます: 🎜rrreee🎜🎜説明: 🎜🎜
  • この Lambda 式では、[sum, num] はキャプチャ リストであり、外部に必要なものが含まれています。変数。 🎜
  • (sum, num) はパラメータ リストで、2 つのパラメータを受け取ります。sum は累積値、num は累積値です。コンテナ内の値 現在の値。 🎜
  • -> int は戻り値の型を指定します (この場合は int)。 🎜
  • 関数本体は条件文を使用して num が奇数かどうかを確認し、奇数の場合はそれを sum に追加して返します。それ以外の場合は sum を返します。 コードコード>。 🎜<li>最後に、<code>std::accumulate 関数は、ラムダ式を二項演算子として使用して、コンテナ内のすべての奇数を sum_odd に累積します。 🎜🎜🎜上記の方法を使用すると、ラムダ式を使用して関数から簡単に結果を返すことができます。 🎜

以上がC++ ラムダ式はどのように結果を返すのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート