So today i was learning about c++ lambda functions. and i have some doubts.
Q.1) See this
why the output is 2?
Q.2) another question
This is giving me runtime error why?
tell me
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
So today i was learning about c++ lambda functions. and i have some doubts.
Q.1) See this
function<int(int,int)> sum = [&](int a, int b)
{
++a;
return a+b;
};
int a = 2, b = 3;
int s = sum(a, b);
cout << a << endl;// why it's 2 i have passed 'a' with refrence. how to pass it with refrence.
Q.2) another question
function<int(int)> get2;
cout << get2(3);
get2 = [&](int a)
{
return a;
};
tell me
Название |
---|
a
is passed by value here, not by reference.&
is for captured variables, not for ones passed as arguments.sum
andget
are STL functions, don't name your variables like this. Anyway, in this case you should split declaration and implementation, just like with usual functions:Also, try your best to avoid using
std::function
, this thing will hurt your program's performace and can easily lead to TLE. Useauto
wherever possibleHow to pass 'a' as reference. And i searched online about capture clause but i couldn't understand can you explain with the help of code.
Captured variables are variables just outside the lambda function that can be used in its body (not its arguments). They can be passed by reference [&] or by value [=].
To pass 'a' by reference, just use 'int& a' in the lambda's header.
This is giving me error can you please explain why?
In C++, you have to declare & implement the function before calling it.
This should work:
please try to understand i want to use two functions inside each other in some dp problems. how can i do this.
All you need is forward declaration then, like CountZero said: