Mundarija:

C++ lambda nima?
C++ lambda nima?

Video: C++ lambda nima?

Video: C++ lambda nima?
Video: C++ - lambda expressions 2024, Noyabr
Anonim

C++ 11 va undan keyingi versiyalarda a lambda ifoda - ko'pincha a deb ataladi lambda -anonim funksiya ob'ektini (yopish) to'g'ridan-to'g'ri u chaqirilgan yoki funktsiyaga argument sifatida uzatilgan joyda aniqlashning qulay usuli.

Bu borada Lambda C++ qanday tur?

[C++ 11: 5.1. 2/3]: The turi ning lambda -ifoda (bu ham turi yopilish ob'ekti) noyob, nomlanmagan birlashmagan sinfdir turi - yopilish deb ataladi turi - xususiyatlari quyida tavsiflangan. Bu sinf turi agregat emas (8.5.

Bundan tashqari, nima uchun bizga C++ da lambda ifodalari kerak? C++ kiritilgan funksiya ob'ektlari yoki funktorlar. Funktorlar bor operator() ni ortiqcha yuklaydigan sinflar. Haskell, C#, Erlang yoki F# kabi boshqa dasturlash tillari funksiya taʼriflarini oʻzlari ishlatilayotgan joyda faollashtiradi. Bular bor sifatida tanilgan lambda ifodalari chunki uning sintaksisi hisoblanadi ilhomlantirgan lambda hisob.

Bundan tashqari, savol: C++ da lambda funksiyasini qanday o'tkazish mumkin?

Lambdani funktsiyaga argument sifatida o'tkazishning 3 usuli:

  1. Lambda obyektini e'lon qilish uchun std::funksiyadan foydalanish. bekor lambdaMisol1()
  2. Funktsiya turini e'lon qilish va unga lambda funktsiyasini belgilash uchun typedef dan foydalanish. void lambdaExample2()
  3. Lambdani e'lon qilish uchun strukturadan foydalanish.

Lambda yopilishi nima?

A lambda mohiyatan funktsiyalarni e'lon qilishning standart usuli emas, balki satrda aniqlangan funktsiyadir. Lambdalar tez-tez ob'ektlar sifatida o'tkazilishi mumkin. A yopilish uning tanasidan tashqaridagi maydonlarga havola qilish orqali o'zining atrofdagi holatini o'rab turgan funksiyadir.