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