Heim > Backend-Entwicklung > C++ > Lambdas vs. Bind in C: Wann sollten Sie sich für beide entscheiden?

Lambdas vs. Bind in C: Wann sollten Sie sich für beide entscheiden?

Susan Sarandon
Freigeben: 2024-11-01 02:49:28
Original
787 Leute haben es durchsucht

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

Lambdas vs. Bind in C: Polymorphismus und Effizienz

Beim Vergleich der Verwendung von C 0x Lambdas und std::bind für ähnliche Aufgaben , die Wahl zwischen den beiden kann durch Faktoren wie Polymorphismus und Effizienz beeinflusst werden.

Bind vs. Lambda im Detail

Betrachten Sie das folgende Beispiel, in dem sowohl Lambda als auch Bind sind werden verwendet, um Zufallszahlen mithilfe einer Verteilung und Engine zu generieren:

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

// Using bind
auto dice = bind(distribution, engine);
Nach dem Login kopieren

Polymorphismus

Im Gegensatz zu Lambdas, die monomorph sind (d. h. feste Typen haben), std: :bind ermöglicht polymorphes Verhalten. Dies bedeutet, dass bind zum Erstellen von Funktionen mit unbekannten Typen verwendet werden kann, wie unten gezeigt:

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"
Nach dem Login kopieren

In diesem Beispiel werden die Typen von a und b zur Laufzeit abgeleitet, wenn f aufgerufen wird. Diese Flexibilität ist bei Lambdas nicht verfügbar.

Effizienz

Im Allgemeinen sind Lambdas tendenziell effizienter als bind, wenn die erfassten Variablen als Wert verwendet werden. Dies liegt daran, dass Lambdas Variablen direkt erfassen, während bind ein Abschlussobjekt erstellt, das auf die erfassten Variablen verweist. Allerdings kann Bind Vorteile bieten, wenn die erfassten Variablen groß sind oder wenn die Funktion häufig aufgerufen wird.

Fazit

Die Wahl zwischen Lambdas und Bind hängt von den spezifischen Anforderungen ab der Bewerbung. Lambdas bieten Polymorphismus und eignen sich effizient zum Erfassen kleiner Variablen vom Werttyp. Bind bietet mehr Flexibilität und ist möglicherweise vorzuziehen, wenn es um große oder häufig aufgerufene Funktionen geht.

Das obige ist der detaillierte Inhalt vonLambdas vs. Bind in C: Wann sollten Sie sich für beide entscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage