C++ ラムダ式と従来の関数の違いは何ですか?

王林
リリース: 2024-06-05 12:52:57
オリジナル
492 人が閲覧しました

C++ ラムダ式と従来の関数の違い ラムダ式と従来の関数の主な違いは次のとおりです。 匿名性: ラムダ式は匿名であり、関数名を必要としません。構文: ラムダ式は角かっこと括弧を使用して表現され、従来の関数は標準の関数構文を使用します。キャプチャ リスト: ラムダ式はキャプチャ リストを使用して外部変数にアクセスできますが、従来の関数は明示的に渡されたパラメータのみにアクセスできます。型推論: ラムダ式は型推論をサポートしますが、従来の関数では明示的な型が必要です。

C++ Lambda 表达式与传统函数有什么区别?

C++ ラムダ式と従来の関数の違い

はじめに

ラムダ式は、C++ で導入された強力な匿名関数で、従来の関数と同様の機能を備えていますが、構文はより単純です。この記事では、ラムダ式と従来の関数の主な違いを説明し、これらの違いを説明するための実践的な例を示します。

匿名性

主な違いの 1 つは、ラムダ式が匿名であること、つまり名前がないことです。対照的に、従来の関数では、呼び出す前に名前を宣言する必要があります。

構文

ラムダ式は、以下に示すように角括弧と括弧を使用して表現されます:

[capture-list] (parameters) -> return-type { function-body };
ログイン後にコピー

従来の関数は次の構文を使用します:

return-type function-name(parameters) { function-body };
ログイン後にコピー

キャプチャリスト

ラムダ式はキャプチャリストを使用できます。外側のスコープ内の変数にアクセスします。従来の関数は、明示的に渡されない限り、外部変数にアクセスできません。

型推論

ラムダ式は型推論をサポートしています。これは、コンパイラーがラムダの戻り値の型とパラメーターの型を自動的に推論できることを意味します。従来の関数には明示的な型指定が必要です。

実際のケース

例1: ベクトルの並べ替え

ラムダ式を使用して整数ベクトルを昇順に並べ替えます:

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> v = {3, 1, 4, 2};

  std::sort(v.begin(), v.end(), [](int a, int b) { return a < b; });

  for (int num : v) {
    std::cout << num << " ";
  }
  std::cout << std::endl;

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

例2: 平均を計算します

ラムダ式を使用して浮動小数点数を計算しますベクトル:

#include <vector>
#include <numeric>

int main() {
  std::vector<float> v = {2.5, 3.1, 4.2, 1.7};

  float avg = std::accumulate(v.begin(), v.end(), 0.0, [](float a, float b) { return a + b; }) / v.size();

  std::cout << "Average: " << avg << std::endl;

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

結論

ラムダ式には、従来の関数との類似点と相違点の両方があります。ラムダ式は匿名で型が推論され、外部変数をキャプチャできるため、より簡潔で柔軟な関数の作成方法が提供されます。ラムダ式は、1 回限りの関数をすばやく作成したり、外部変数を処理したりする必要があるシナリオに最適です。

以上がC++ ラムダ式と従来の関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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