0Pricing
C++ Academy · Pelajaran

Lambda Generik dan Closure C++14

Tulis lambda generik dengan parameter auto dan pahami tipe closure

Lambda Generik dan Closure C++14 adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Lambda Generik

C++14 memungkinkan Anda menulis auto dalam daftar parameter lambda. Kompiler membuat operator() bertemplat — lambda tersebut menerima tipe apa pun.

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

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

Cara Kerjanya

Lambda menjadi kelas dengan operator() bertemplat. Setiap kombinasi tipe yang unik membuat instansiasi fungsi terpisah secara internal.

Kasus Penggunaan

Lambda generik sangat berguna dalam algoritma yang bekerja dengan berbagai tipe.

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);

Beberapa Parameter auto

Setiap auto berdiri sendiri — parameter yang berbeda dapat menghasilkan tipe yang berbeda.

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

Closure Adalah Objek

Setiap ekspresi lambda membuat sebuah closure — instans dari kelas unik yang dibuat kompiler. Closure menyimpan variabel yang ditangkapnya sebagai anggota.

Tipe Unik untuk Setiap Lambda

Setiap ekspresi lambda memiliki tipe unik, meskipun dua lambda memiliki teks yang sama persis. Nama tipenya tidak dapat ditulis secara langsung — gunakan auto atau std::function.

Menyimpan Lambda dalam std::function

Untuk menyimpan lambda dalam variabel yang tipenya diketahui, bungkus lambda tersebut dengan std::function. Cara ini menambah sedikit biaya, tetapi memungkinkan polimorfisme waktu berjalan untuk objek yang dapat dipanggil.

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

Biaya Penghapusan Tipe

std::function menggunakan penghapusan tipe — ia dapat menyimpan objek apa pun yang dapat dipanggil dan kompatibel, tetapi menambah alokasi heap serta pemanggilan virtual. Hindari penggunaannya dalam perulangan yang sering dijalankan.

Kapan auto Sudah Cukup

Untuk lambda berumur pendek (diteruskan ke algoritma, disimpan dalam auto), penghapusan tipe tidak diperlukan sehingga tidak ada biaya tambahan.

Mengembalikan Lambda

Gunakan auto sebagai tipe pengembalian untuk mengembalikan lambda. Setiap pemanggilan membuat closure baru.

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

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

Fungsi Orde Tinggi

Lambda membuat C++ menjadi tempat yang nyaman untuk fungsi orde tinggi — fungsi yang menerima atau mengembalikan fungsi lain.

Pemeriksaan Singkat

Apa arti auto dalam daftar parameter lambda C++14?

Rangkuman

Lambda generik C++14 menggunakan parameter auto untuk polimorfisme waktu kompilasi. Setiap lambda adalah tipe closure yang unik — gunakan auto untuk menyimpannya, atau std::function ketika penghapusan tipe diperlukan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Lambda Generik dan Closure C++14” gratis?

Ya — teks lengkap “Lambda Generik dan Closure C++14” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Lambda Generik dan Closure C++14”?

Tulis lambda generik dengan parameter auto dan pahami tipe closure Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Lambda Generik dan Closure C++14” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Objek Fungsi dan Functor
  2. Capture Lambda berdasarkan Nilai, Referensi, dan Mutable
  3. Lambda Generik dan Closure C++14
  4. std::function: Callable dengan Penghapusan Tipe
← Kembali ke C++ Academy