ラムダ式と関数ポインタはどちらも C でコードをカプセル化するためのメカニズムですが、実装と特性が異なります。実装方法: 関数ポインタは関数のメモリ アドレスを指しますが、ラムダ式はインラインの匿名コード部分です。戻り値の型: 関数ポインターの戻り値の型は固定されていますが、ラムダ式の戻り値の型は本体コード ブロックによって決まります。変数のキャプチャ: 関数ポインターは外部変数をキャプチャできませんが、ラムダ式は [&] または [=] キーワードを使用して参照または値によって外部変数をキャプチャできます。構文: 関数ポインターにはアスタリスク (*) を使用し、ラムダ式には角括弧 ([]) を使用します。
#ラムダ式と C 関数の関数ポインターの違い
#はじめに#Lambda 式と関数ポインターはどちらも、コードを呼び出し可能なエンティティにカプセル化するための C のメカニズムです。これらの目的は似ていますが、実装と機能にいくつかの重要な違いがあります。
実装
[=]
(値によるキャプチャ) キーワード external によってキャプチャできます。変数。
関数ポインタ:
ラムダ式:
#関数ポインターのケース
// someFunction 是一个返回 int 的函数,接受 int 和指针作为参数 int someFunction(int a, int *ptr); // 定义指向 someFunction 的函数指针 int (*pFunc)(int, int *) = someFunction; // 使用函数指针调用 someFunction int result = (*pFunc)(10, &x);
ラムダ式のケース
// 定义捕获外部变量 x 的 lambda 表达式 auto f = [&](int a) -> int { return a * x; }; // 使用 lambda 表达式 int result = f(10);
主な違いの概要
機能
ラムダ式 | ||
---|---|---|
##戻り値の型 | ##関数型に固定 | #決定本体コード ブロックによる|
禁止 | 許可、値または参照によるキャプチャ | |
アスタリスク (*) を使用します。 | 角括弧 ([]) を使用します。 |
以上がC++ 関数のラムダ式と関数ポインターの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。