0Pricing
C++ Academy · Ders

Genel Lambda'lar ve Kapanışlar C++14

auto parametreleriyle genel lambda'lar yazın ve kapanış türleri hakkında akıl yürütün

Genel Lambda'lar ve Kapanışlar C++14, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Genel Türlü Lambda İfadeleri

C++14, lambda'nın parametre listesinde auto yazmanıza izin verir. Derleyici, şablonlu bir operator() üretir; lambda her türü kabul eder.

auto print = [](const auto& x) {
    std::cout << x << "\n";
};

print(42);
print("hello");
print(3.14);

Nasıl Çalışırlar?

Lambda, şablonlu bir operator() içeren bir sınıfa dönüşür. Her benzersiz tür birleşimi, arka planda ayrı bir işlev örneği oluşturur.

Kullanım Alanları

Genel türlü lambda ifadeleri, birden fazla türle çalışan algoritmalarda özellikle kullanışlıdır.

std::vector<int> ints = {1, 2, 3};
std::vector<std::string> strs = {"a", "b"};

auto printAll = [](const auto& container) {
    for (const auto& x : container) std::cout << x << " ";
};
printAll(ints);
printAll(strs);

Birden Çok auto Parametresi

Her auto bağımsızdır; farklı parametreler farklı türlere çözümlenebilir.

auto add = [](auto a, auto b) {
    return a + b;
};
std::cout << add(1, 2.5);            // 3.5
std::cout << add(std::string("Hi"), "!");  // Hi!

Kapanışlar Nesnedir

Her lambda ifadesi bir kapanış oluşturur; bu, derleyici tarafından üretilen benzersiz bir sınıfın örneğidir. Kapanış, yakalanan değişkenleri üye olarak saklar.

Her Lambda İçin Benzersiz Tür

İki lambda aynı metne sahip olsa bile her lambda ifadesinin türü benzersizdir. Tür adını doğrudan yazamazsınız; auto veya std::function kullanın.

Lambda İfadelerini std::function İçinde Saklama

Türü bilinen bir değişkende lambda tutmak için onu std::function ile sarmalayın. Bu, küçük bir ek yük getirir, ancak çağrılabilirler üzerinde çalışma zamanı çok biçimliliği sağlar.

#include <functional>
std::function<int(int)> doubler = [](int x) { return x * 2; };

Tür Silmenin Bedeli

std::function, tür silme kullanır; uyumlu herhangi bir çağrılabilir nesneyi saklayabilir, ancak yığın belleği ayırma ve sanal çağrı ekler. Yoğun döngülerde kullanmaktan kaçının.

auto Ne Zaman Yeterlidir?

Kısa ömürlü lambda ifadelerinde (algoritmalara aktarılan veya auto içinde saklanan lambda ifadelerinde) tür silmeye gerek yoktur ve ek yük oluşmaz.

Lambda İfadelerini Döndürme

Bir lambda döndürmek için dönüş türü olarak auto kullanın. Her çağrı yeni bir kapanış oluşturur.

auto makeAdder(int n) {
    return [n](int x) { return x + n; };
}

auto add5 = makeAdder(5);
std::cout << add5(10);   // 15

Üst Düzey İşlevler

Lambda ifadeleri, C++'ı başka işlevleri alan veya döndüren işlevler olan üst düzey işlevler için rahat bir ortama dönüştürür.

Hızlı Kontrol

C++14 lambda parametre listesindeki auto ne anlama gelir?

Özet

C++14 genel türlü lambda ifadeleri, derleme zamanı çok biçimliliği için auto parametrelerini kullanır. Her lambda benzersiz bir kapanış türüdür; bunları tutmak için auto, tür silme gerektiğinde ise std::function kullanın.

Sıkça Sorulan Sorular

“Genel Lambda'lar ve Kapanışlar C++14” dersi ücretsiz mi?

Evet — “Genel Lambda'lar ve Kapanışlar C++14” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Genel Lambda'lar ve Kapanışlar C++14” dersinde ne öğreneceğim?

auto parametreleriyle genel lambda'lar yazın ve kapanış türleri hakkında akıl yürütün C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Genel Lambda'lar ve Kapanışlar C++14” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İşlev Nesneleri ve İşlev Nesnesi Sınıfları
  2. Lambda Yakalamaları: Değerle, Referansla, mutable
  3. Genel Lambda'lar ve Kapanışlar C++14
  4. std::function ile Türü Silinmiş Çağrılabilirler
← C++ Academy Sayfasına Dön