ホームページ > バックエンド開発 > C++ > C におけるラムダとバインド: それぞれをいつ選択する必要がありますか?

C におけるラムダとバインド: それぞれをいつ選択する必要がありますか?

Susan Sarandon
リリース: 2024-11-01 02:49:28
オリジナル
789 人が閲覧しました

Lambdas vs. Bind in C  : When Should You Choose Each?

C におけるラムダとバインド : ポリモーフィズムと効率

同様のタスクに対する C 0x ラムダと std::bind の使用法を比較する場合

バインドとラムダの詳細

ラムダとバインドの両方が含まれる次の例を考えてみましょう。分布とエンジンを使用して乱数を生成するために使用されます:

// Using lambda
auto dice = [&]() { return distribution(engine); };

// Using bind
auto dice = bind(distribution, engine);
ログイン後にコピー

多態性

単相的な (つまり、固定型を持つ) ラムダとは異なり、std: :bind はポリモーフィックな動作を可能にします。これは、以下に示すように、bind を使用して未知の型の関数を作成できることを意味します。

struct foo {
  typedef void result_type;

  template <typename A, typename B>
  void operator()(A a, B b) {
    cout << a << ' ' << b;
  }
};

auto f = bind(foo(), _1, _2);
f("test", 1.2f); // will print "test 1.2"
ログイン後にコピー

この例では、a と b の型は、f が呼び出された実行時に推定されます。この柔軟性はラムダでは利用できません。

効率

一般に、キャプチャされた変数が値によって使用される場合、ラムダはバインドより効率的になる傾向があります。これは、ラムダが変数を直接キャプチャするのに対し、bind はキャプチャされた変数を参照するクロージャ オブジェクトを作成するためです。ただし、キャプチャされた変数が大きい場合、または関数が頻繁に呼び出される場合には、バインドの方が利点がある場合があります。

結論

ラムダとバインドのどちらを選択するかは、特定の要件によって異なります。アプリケーションの。ラムダはポリモーフィズムを提供し、小さな値型の変数を効率的にキャプチャできます。バインドは柔軟性が高く、大規模な関数や頻繁に呼び出される関数を処理する場合に適しています。

以上がC におけるラムダとバインド: それぞれをいつ選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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