CS 368 (C++): Lecture 5
Lambdas
Oct 12th, 2016
Lambdas in C++
std::transform()
std::transform(inV.begin(), inV.end(), outV.begin(), function);
A square function in C++
int square(int x) {
return x * x;
}
A square function in C++ along with main()
int main() {
}
A square function in C++ along with main()
int main() {
int y = square(3);
}
A square function in C++ along with main()
int square(int x);
int main() {
int y = square(3);
}
A square function in C++ along with main()
int square(int x); // function declaration
int main() {
int y = square(3);
}
A square function in C++ along with main()
int square(int x); // function declaration
int main() {
int y = square(3);
}
int square(int x) {
return x * x;
}
A square function in C++ along with main()
int square(int x); // function declaration
int main() {
int y = square(3);
}
int square(int x) { // function definition
return x * x;
}
std::transform()
�
�
7
3
2
9
4
inV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
7
3
2
9
4
inV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
0
0
0
0
0
7
3
2
9
4
inV:
outV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
49
0
0
0
0
7
3
2
9
4
inV:
outV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
49
9
0
0
0
7
3
2
9
4
inV:
outV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
49
9
4
0
0
7
3
2
9
4
inV:
outV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
49
9
4
81
0
7
3
2
9
4
inV:
outV:
std::transform()
�
std::transform(inV.begin(), inV.end(), outV.begin(), square);
�
49
9
4
81
16
7
3
2
9
4
inV:
outV:
𝛌 Calculus
Lambda Calculus
A function to square a number:
square(x) = x * x
In Lambda Calculus:
x → x * x
A square function in C++
int square(int x) {
return x * x;
}
A square function in C++ using lambdas!
int square(int x) {
return x * x;
}
A square function in C++ using lambdas!
int square(int x) {
return x * x;
}
A square function in C++ using lambdas!
int (int x) {
return x * x;
}
A square function in C++ using lambdas!
int (int x) {
return x * x;
}
A square function in C++ using lambdas!
(int x) {
return x * x;
}
A square function in C++ using lambdas!
[] (int x) {
return x * x;
}
A square function in C++ using lambdas!
[] (int x) { return x * x; }
std::transform() using a lambda function
auto lambda = [] (int x) { return x * x; }
std::transform() using a lambda function
auto lambda = [] (int x) { return x * x; }
std::transform(inV.begin(), inV.end(), outV.begin(), lambda);
std::transform() using a lambda function
std::transform(inV.begin(), inV.end(), outV.begin(),� [] (int x) { return x * x; });
Demo: Lambdas (λ)