Cdorsu Posted October 24, 2015 Share Posted October 24, 2015 (edited) Functii lambda sunt prezente in limbajul C++ din versiunea C++11 ( Modern C++ ). Ele sunt echivalentul functiilor inline din 'trecut'. Aceasta este o functie lambda: [=](int a,int b)mutable throw() -> int { return a+b; } [ = ] // modul de capturare a variabilelor (aici pe valoare) [ & ] // aici referinta [ &a, b] // aici capturez variabila a pe referinta, iar variabila b pe valoare [ ] //Nu capturez variabile //Aceste paranteze sunt obligatorii (int a, int b) //exact ca la functii, acestia sunt parametrii functiei //Sunt optionali mutable - inseamna ca vom modifica valorile //Este optional thow() //exceptii //Esti optional -> int //returnez un intreg //Este optional Un mic exemplu: #include <iostream> #include <vector> #include <stdio.h> int main() { int i; std::vector<int> vct; auto predicat = [&]{ return vct.empty(); }; if(predicat())//Verific daca vectorul este gol std::cout<<"Vectorul est gol.\n"; for(i=0;i<=256;++i) vct.push_back(rand()%1024); if(!predicat()) std::cout<<"Vectorul nu mai este gol.\n"; } #include <iostream> #include <algorithm> #include <vector> #include <stdio.h> int main() { int i; std::vector<int> vector; for(i=0;i<100;++i) vector.push_back(rand()%1024); std::for_each(vector.begin(),vector.end(),[](int & numar) { std::cout<<numar<<' '; }); } Edited October 24, 2015 by Cdorsu 1 Link to comment Share on other sites More sharing options...
ALexu Posted November 19, 2015 Share Posted November 19, 2015 Topic closed ! Link to comment Share on other sites More sharing options...
Recommended Posts