Mundarija:
Video: C++ lambda nima?
2024 Muallif: Lynn Donovan | [email protected]. Oxirgi o'zgartirilgan: 2023-12-15 23:54
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:
- Lambda obyektini e'lon qilish uchun std::funksiyadan foydalanish. bekor lambdaMisol1()
- Funktsiya turini e'lon qilish va unga lambda funktsiyasini belgilash uchun typedef dan foydalanish. void lambdaExample2()
- 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.