Форум программистов, компьютерный форум, киберфорум
Наши страницы

Какие есть способы принять лямбду в кач-ве аргумента? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача о НОП (динамическое программирование) http://www.cyberforum.ru/cpp-beginners/thread1034281.html
Здравствуйте!!! Мне нужно решить задачу о нахождении наибольшей общей подстроки. Поискал в интернете, нашёл такой код на Pascal: var x,y,z:string; a:array of byte; i,j:byte; begin ...
C++ процедура RectPS (перевести с паскаля) Привет всем!!!Помогите перевести с паскаля на С++ rectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1),... http://www.cyberforum.ru/cpp-beginners/thread1034279.html
C++ После ввода с клавиатуры произвольного строки выдать на экран протокол о количестве вхождений каждого символа. В протоколе символы расположить по алфа
После ввода с клавиатуры произвольного строки выдать на экран протокол о количестве вхождений каждого символа. В протоколе символы расположить по алфавиту, отдельными группами для различных...
C++ Классы, наследование
Доброго времени суток! Объясните пожалуйста, как работает операция "::" на примере этой программы. И работу конструкции Time::Time() : TimeBase() main.cpp #include <stdio.h> #include...
C++ Определить пересекается ли парабола и прямая http://www.cyberforum.ru/cpp-beginners/thread1034235.html
Определите, пересекается ли парабола y=cx^2+dx+f и прямая y=ax+b . При положительном ответе найти точки пересечения. Заранее благодарен.
C++ И что делать дальше?Поделитесь опытом Итак вопрос немного необычного характера. Дела обстоят так: 1) В университете нам вообще не преподают нормально програмирование 2)Я уже выучила хорошо синтаксис С++ 3)Но синтаксис этот не... подробнее

Показать сообщение отдельно
Max Dark
шКодер самоучка
1851 / 1651 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
09.12.2013, 14:07
std::function это класс обертка вокруг указателя на функцию,
а лямбда это простая функция, не имеющая имени.
Те что бы принимать лямбду в качестве параметра нужно иметь параметр указатель на функцию
например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int Do(int* start, int*end, int (*func)(int)) {
    int result;
    for(int* it = start, it!=end; ++it)
        result+=func(*it);
    return result;
}
int test(int a) {
    return a-a/2;
}
//////
int (*lambda)(int) =  [] (int a) ->int{
            return a/2;
        }
auto lambda2 =  [] (int a) ->int{
            return a*2;
        }
int result = Do(arr , arr+sz, [] (int a) ->int{
            return a+a/2;
        });
int result = Do(arr , arr+sz, test);
int result = Do(arr , arr+sz, lambda);
int result = Do(arr , arr+sz, lambda2);
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru