Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35

Лямбда функции

04.12.2015, 17:19. Показов 4770. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер!
Пытаюсь ознакомиться поближе с лямбда функциями и уже возникли трудности... Просмотрела пару публикаций на эту тему и попробовала написать простой код.
Но проблема с тем, что компилятор не может запушить в вектор лямбда функцию... Но ведь она должна вернуть интовое значение. Что не так я делаю?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    srand(time(NULL));
 
    std::vector<int> srcVec;
    
    srcVec.push_back([]
    {
        int temp = rand()%30; 
        if (temp % 2 == 0) 
            return temp; 
        else return 0;
    });
 
    return EXIT_SUCCESS;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2015, 17:19
Ответы с готовыми решениями:

Передача лямбда в функции
В чем смысл передачи лямбда выражения функции?auto square = (int x) { return x * x; }; std::cout &lt;&lt; square(16) &lt;&lt;...

Функции и Лямбда выражения
Доброго времени суток, дорогие форумчане! Всплыл вопрос: &quot;Вот хочу сделать функцию и передавать ей как аргумент какое-то условие допустим...

Назначение mutable в лямбда-функции
Прокомментируйте, чтоб не выдумывать. Спецификатор mutable определяет по списку захвата локальные статические переменные? int main() {...

26
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
04.12.2015, 18:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от S_el Посмотреть сообщение
обязательно.
Здесь пишут, что не обязательно
https://msdn.microsoft.com/ru-... 93608.aspx
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.12.2015, 18:56
Цитата Сообщение от daslex Посмотреть сообщение
Здесь пишут, что не обязательно
1. Читайте всю переписку.
2. Давайте конкретную цитату.
3. Попробуйте скомпилировать лямбду без [] или () или {} и поймете,что не правы или сможете подтвердить свою правоту.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
04.12.2015, 19:53
Всё прекрасно работает в clang
C++
1
2
3
   []{
        std::cout<<"OK\n";
    }();
Мои выводы таковы, что Тамика писала о параметрах (). Т.к. не написала их в своем коде. Ибо посчитала необязательными в описании. Остальное все было, за исключением вызова самой лямбды.
В моем коде список параметров проигнорирован, но это не мешает выполнятся лямбда функции.

Добавлено через 25 минут
Вот она минимальная лямбда.
C++
1
[] {};
В том, что эти части необязательны никто и не утверждал.
Остальные части не обязательны, хотя обязательны в определенных случаях.
1
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.12.2015, 20:45
Цитата Сообщение от daslex Посмотреть сообщение
Всё прекрасно работает в clang
Да,был не прав,лямбда может работать и без круглых скобок.

C++
1
2
3
4
5
6
#include <iostream>
 
int main() {
    []{std::cout<<"Hello world"<<std::endl;}();
    return 0;
}
http://ideone.com/uZ3j4n
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
04.12.2015, 21:20
Тамика, простите меня за занудство, но
C++
1
2
3
4
srcVec.push_back([]
    {
        return (rand()%15*2) * (rand()%2);  // Нафига. Вот нафига громоздить код, особенно в лямбдах.
    }());
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
04.12.2015, 22:15  [ТС]
Цитата Сообщение от daslex Посмотреть сообщение
Тамика, простите меня за занудство, но
Не прощу.
Это ведь обучение. Какая разница на чём? Когда освою, тогда буду тулить, куда посчитаю нужным. А пока себе придумала вот такой вот пример.)
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
04.12.2015, 22:39

Не по теме:

чем меньше лишнего. тем больше взгляд падает на нужное.



Добавлено через 19 минут

Не по теме:

Я имел ввиду избыточность кода внутри лямбды. Лишние создания переменных и сравнение, которых проще избежать.
А не что-то на чем-то. Вполне естественный эксперимент.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2015, 22:39

Лямбда, как параметр функции
здравствуйте, есть код: template&lt;typename Container, typename...Args&gt; void fafa(Container&amp;&amp; c, std::function&lt;Args...&gt; f) { ...

Время жизни лямбда-функции
A lambda might outlive its caller/ This can happen if we pass a lambda to a different thread or the callee stores away the lambda for...

Изменение содержимого вектора из лямбда функции
Только начал разбираться с лямбда, не могу понять, что нетак сделал. Вот код, std::queue&lt;Pointf&gt; active; Pointf point =...

Захват всех значений в лямбда функции
Привет. Был вопрос на собеседовании &quot;как сделать лямбда функцию так, чтобы список захвата мог принять любое значение&quot;? Ну или...

Использование лямбда выражения в качестве аргумента функции
После того как я познакомился с ламбда функциями я хотел проверить их знания на некой практике, но я столкнулся с тем, что не знаю как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru