ホームページ >バックエンド開発 >C++ >関数ポインターを C++ ラムダ式に置き換えるにはどうすればよいですか?

関数ポインターを C++ ラムダ式に置き換えるにはどうすればよいですか?

PHPz
PHPzオリジナル
2024-04-17 16:24:02397ブラウズ

関数ポインターをラムダ式に置き換えると、可読性が向上し、定型コードが削減され、再利用性が向上します。具体的には、ラムダ式は次の構文を使用します: [キャプチャ リスト](パラメータ リスト) -> 戻り値の型 {body} これは、コードの単純さと保守性を向上させるためにベクトルの並べ替えなどの実際のケースで使用できます。

如何用 C++ lambda 表达式替换函数指针?

関数ポインターを C のラムダ式に置き換える

ラムダ式は C++11 で導入され、簡単なメソッドを定義できるようになりました。匿名関数または関数ポインター。関数ポインタをラムダ式に置き換えることには、次のような多くの利点があります。

構文
  • ラムダ式の構文は次のとおりです:
  • [capture list](parameter list) -> return type { body }
  • キャプチャ リスト:
括弧内のカンマ 区切られた変数のリストこれはラムダ式のスコープからキャプチャされます。

パラメータ リスト:

括弧内のカンマ区切りのパラメータ リスト。

    戻り値の型:
  • 関数の戻り値の型 (オプション)。
  • body:
  • 中括弧で囲まれた関数の本体。
  • 次に、関数ポインターをラムダ式に置き換える例を示します。
  • // 函数指针方式
    int compare(int a, int b) { return a - b; }
    
    // Lambda 表达式方式
    auto compare = [](int a, int b) { return a - b; };
    実際のケース:ベクトルの並べ替え

実際のケースでは、ラムダ式の利点がわかります。

#include <vector>
#include <algorithm>

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

  // 用 lambda 表达式对向量进行排序
  std::sort(v.begin(), v.end(), [](int a, int b) { return a < b; });

  // 打印排序后的向量
  for (int x : v) {
    std::cout << x << " ";
  }

  return 0;
}
この場合、ラムダ式は、ベクトルの並べ替えに使用される比較関数を定義するために使用されます。 。個別の関数を定義する必要がなく、コードがよりシンプルで理解しやすくなります。

以上が関数ポインターを C++ ラムダ式に置き換えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。