Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- https://en.cppreference.com/w/cpp/language/lambda
- Лямбда-выражениями называются безымянные локальные функции,
- которые можно создавать прямо внутри какого-либо выражения.
- Лямбда-выражения в C++ — это краткая форма записи анонимных функторов.
- Другими словами, это просто синтаксический сахар.
- Синтаксис лямбда-функции определяется как: [capture list] (parameters) -> return-type {method definition}.
- Обычно компилятор оценивает тип возврата самой лямбда-функции.
- */
- #include <algorithm>
- #include <cassert>
- #include <iostream>
- #include <vector>
- using namespace std;
- struct Student {
- int age;
- string name;
- };
- int main() {
- vector<int> nums = { 9, 7, 6, 3, 5, 4, 1, 2, 8 };
- sort(begin(nums), end(nums), [] () {}); //реализовать лямбду такую, что числа были отсортированы по возрастанию
- vector<int> sorted_nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- assert(nums == sorted_nums);
- vector<Student> students = { {17,"Mary"}, {18, "Vasya"}, {21, "Oleg"}, {17, "Sasha"}, {19, "Vanya"} };
- //используя стандартную сортировку с лямбда выражением отсортировать вектор структур по возрасту
- //и вывести на экран результат
- //используя стандартную сортировку с лямбда выражением отсортировать вектор students по имени
- //и вывести на экран результат
- //используя стандартную сортировку с лямбда выражением отсортировать вектор students
- //сначала по возрасту, а в случае равенства возрастов - по имени.
- //и вывести на экран результат
- //определить лямбду, которая будет складывать два числа
- //auto sum = () [] {};
- assert(4, sum(2, 2));
- /*
- на собеседовниях иногда спрашивают про типы захывата переменных в лямбдах
- вот коротко если -
- The capture list defines what from the outside of the lambda
- should be available inside the function bodyand how.It can be either :
- 1) a value : [x]
- 2) a reference[&x]
- 3) any variable currently in scope by reference[&]
- 4) same as 3, but by value[=]
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement