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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
UltraPenguin
229 / 95 / 22
Регистрация: 20.03.2014
Сообщений: 304
Завершенные тесты: 1
#1

В чем плюсы лямбд? - C++

06.10.2015, 13:13. Просмотров 1236. Ответов 47
Метки нет (Все метки)

В чем очевидные и/или измеряемые плюсы лямбд в C++? Повышает ли это скорость кода? Или памяти меньше? Или еще что-то? Ну кроме повышения ЧСВ и того что это стильно-модно-молодежно? Слышал еще, что знание лямбд позволяет подкатывать к девушкам (типа "Детка, пойдем ко мне? Покажу тебе свои лямбда-исчисления А затем мы апплицируем одну интересную лямбда-абстракцию под номером 69 которую я только что выучил"), но сам не проверял. Какие у кого мысли по этому поводу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2015, 13:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В чем плюсы лямбд? (C++):

Использование лямбд - C++
Допустим есть 2 класса A и B, из B нужно вызывать некоторые методы из А, допустим таких методов немного 2-3 не более, а то и во все 1. ...

Верно ли такое использование лямбд - C++
Доброй ночи. Есть функция: void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=0 ) На вход она принимает...

Целесообразность написания дополнительных скобок или "с чем плюсы вкуснее?" - C++
Ну, Вам правильно ответили, но второе условие и так будет исполняться. Т.е. если текст не пустой, то будет срабатывать любое из значений, а...

Переход на плюсы. - C++
Здравствуйте. Я вот уже год как программирую на языке Си, и хотелось бы начать на плюсах... С ужасом обнаружил, что меня пугает даже...

Плюсы и минусы - C++
В массиве Z(m) найти число чередований знака, то есть число переходов с плюсов на минус или с минуса на плюс. Например, в...

Перепись с vb.net на плюсы - C++
Доброго времени суток, товарищи. Такой вопрос: получу ли я технологический профит, если перепишу программу, написанную на vb.net на...

47
gru74ik
Модератор
Эксперт CЭксперт С++
4350 / 1926 / 208
Регистрация: 20.02.2013
Сообщений: 5,111
Записей в блоге: 22
06.10.2015, 16:33 #16
_Ivana, а разве функциональные объекты в С++ не являются объектами первого класса?
0
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,082
Записей в блоге: 5
06.10.2015, 16:39 #17
gru74ik, если да - тогда я признаю что лохЪ и посыплю голову пеплом. Но я не большой эксперт в плюсах, поэтому и выдал это под грифом "мое имхо". Но во время моего баловства с ними я натыкался на ограничения, хотя может это от моего незнания.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4350 / 1926 / 208
Регистрация: 20.02.2013
Сообщений: 5,111
Записей в блоге: 22
06.10.2015, 16:42 #18
_Ivana, в плюсах, ЕМНИП, объектами первого класса не являются обычные функции, и именно поэтому их если и передают в качестве параметра, то только как указатель на функцию. А лямбды как раз-таки являются объектами первого класса.
1
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
06.10.2015, 16:43 #19
Цитата Сообщение от UltraPenguin Посмотреть сообщение
В чем очевидные и/или измеряемые плюсы лямбд в C++?
Цитата Сообщение от daslex Посмотреть сообщение
Буков меньше == Читаемость выше.
Цитата Сообщение от UltraPenguin Посмотреть сообщение
Не всегда
Вы задали вопрос, вам ответили, а вы тут же даете совет, что это не так)
0
gru74ik
Модератор
Эксперт CЭксперт С++
4350 / 1926 / 208
Регистрация: 20.02.2013
Сообщений: 5,111
Записей в блоге: 22
06.10.2015, 16:43 #20
Цитата Сообщение от _Ivana Посмотреть сообщение
если да - тогда я признаю что лохЪ
Ну это лишнее, зачем же с собой такое делать
0
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,082
Записей в блоге: 5
06.10.2015, 16:47 #21

Не по теме:

gru74ik, ну у меня же не ЧСВ, как у иных его обладателей, которые и мне его приписывают



А вопрос первоклассности и возможных других ограничений действительно стоит раскрыть (имхо, опять же), а не просто писать
Цитата Сообщение от DrOffset Посмотреть сообщение
лямбды нужны там, где нужны локальные функции. все.
Остальное - это ненужная философия.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4350 / 1926 / 208
Регистрация: 20.02.2013
Сообщений: 5,111
Записей в блоге: 22
06.10.2015, 16:55 #22
_Ivana, вот:
В C и C++ нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (англ. second-class object). Тем не менее, в C++ есть понятие функционального объекта (англ. function object), который является объектом первого класса и реализует эквивалентную функциям семантику.
0
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,082
Записей в блоге: 5
06.10.2015, 17:15 #23
gru74ik, хорошо, признаю что лохЪ Хотя я в своих (так задевающих ЧВС иных участников) примерах использовал это, передавал-возвращал-создавал-связывал-захватывал по ссылке/значению и т.п. Но все равно у меня устойчивое ощущение наличия ограничений, которых нет в настоящих лямбда-языках. Из-за этого и провокационная фраза про "жалкое подобие". Я могу спросить у спецов, что они скажут на этот счет. Т.к. здесь спецы только пишут что "остальное-это философия", да "Лол-вау". Я не стал этого делать до того как писать на форум, чтобы моя дурь видна была, а не выступать попугаем и транслятором чужих мыслей.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4350 / 1926 / 208
Регистрация: 20.02.2013
Сообщений: 5,111
Записей в блоге: 22
06.10.2015, 17:31 #24
Цитата Сообщение от _Ivana Посмотреть сообщение
выступать попугаем и транслятором чужих мыслей
Это в мой огород самосвал, да?
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
06.10.2015, 18:25 #25

Не по теме:


_Ivana, может тебе велосипед купить? Ты чего такой вредный?


Цитата Сообщение от _Ivana Посмотреть сообщение
Т.к. здесь спецы только пишут что "остальное-это философия"
Я вообще-то ответил по теме. В контексте С++. Почитай хоть пропозалы на лямбды, идея эта основная и она сквозит.
А философией я назвал инсинуации на тему "стильно-модно-молодежно" и чего-то там про ЧСВ.

Про ФП речи вообще не было. Автор про сравнение с ФП не спрашивал.
Так что претензия не засчитана, по крайней мере ко мне.
Быть инициатором превращения этой темы в филиал СВ лично я не собирался.
1
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,082
Записей в блоге: 5
06.10.2015, 18:34 #26

Не по теме:

gru74ik, не, когда писал, даже не думал А сейчас вижу, забавно получилось Но никого не имел в виду.



Не по теме:

DrOffset, спасибо, велосипедов я и сам понаделаю - только подскажите с инструментами: с теми же лямбдами, например


А насчет остального... У каждого свой интерес, про других говорить не буду (ибо могут обидеться ), но лично я хотел с помощью этой темы больше разобраться в возможностях лямбд в С++, и сравнительно с ФП тоже. Ну нет так нет, буду разбираться в другом месте

DrOffset, спасибо за пропозалы.
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
06.10.2015, 18:50 #27
Цитата Сообщение от _Ivana Посмотреть сообщение
Ну нет так нет, буду разбираться в другом месте
Создал бы тему.

Вообще, почти все ответы есть по ссылке выше.
Лямбды создавались в первую очередь для удобства. Никаких принципиально новых задач они не решают. Все, что сейчас делается с ними, раньше можно было сделать и без них, но костыльными методами. Сравни:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
void (*p)(int);
 
void foo()
{
    p = [](int) { std::cout << "hello\n"; };
};
 
void boo()
{
    struct Local {
        static void local_(int)
        {
            std::cout << "hello2\n";
        }
    };
    p = &Local::local_;
}
 
int main()
{
    foo();
    p(10);
    
    boo();
    p(10);
}
Так что проводить прямую параллель с ФЯ, я думаю, здесь не нужно. Более того - опасно. Т.к. может ввести в заблуждение.
Тем не менее, у меня нет никаких оснований думать, что в рамках правил установленных в С++, лямбды чем-то ограничены. Т.е. они умеют все то, что умеют обычные функторы (и даже чуть больше), но удобнее (по задумке).
Про сравнение с ФЯ меня спрашивать вряд ли нужно. Т.к. я на ФЯ не пишу, не писал, и писать, вероятнее всего, не буду. А судить о темах, в которых я разбираюсь поверхностно, не имею привычки.
2
UltraPenguin
229 / 95 / 22
Регистрация: 20.03.2014
Сообщений: 304
Завершенные тесты: 1
06.10.2015, 19:04  [ТС] #28
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Вы задали вопрос, вам ответили, а вы тут же даете совет, что это не так)
Я не давал совет. Просто не согласен конкретно с этим равенством.

Спасибо всем за ответы! Я в своем пока не очень большом опыте еще не сталкивался с ситуацией, где нужны были бы локальные функции и без них никак. Может кто-нибудь привести реальный пример, где лямбды обязательны или экономят полотно кода?
0
daslex
1290 / 534 / 110
Регистрация: 02.08.2011
Сообщений: 2,756
06.10.2015, 19:10 #29
UltraPenguin, посмотри на 1 пост выше своего последнего и еще раз это скажи.
Цитата Сообщение от UltraPenguin Посмотреть сообщение
Просто не согласен конкретно с этим равенством
Добавлено через 2 минуты
нету того, когда они обязательны. Они просто дополнение к существующему. Своеобразная параллель. В STL, например, в алгоритмах немного проще писать лямбды (когда они небольшие) чем описывать предикаты, как отдельные функции.
0
UltraPenguin
229 / 95 / 22
Регистрация: 20.03.2014
Сообщений: 304
Завершенные тесты: 1
06.10.2015, 19:18  [ТС] #30
daslex, смысл на него смотреть если пример образовательный? В реальном коде все может быть гораздо читабельнее за счет названий функции и структуры например. Да и само по себе вполне читаемо. В одном случае одна строка, в другом две (утрировано, если объявление взять за 1).

Поэтому и попросил реальный пример.

Добавлено через 4 минуты
А вообще кто-нибудь пробовал замерить скорость выполнения кода с лямбдами и без?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2015, 19:18
Привет! Вот еще темы с ответами:

Игродел на C++ плюсы и минусы - C++
Всем добрый день У меня к вам вопрос такой вот я сейчас учу C++ и хотел бы пойти работать за границу Game-developerom когда закончу в...

Подходит ли мне C++? Плюсы и минусы - C++
Здравствуйте. Вопрос адресован к программистам C++, которые не те, кто только на словах программисты, а по настоящему программисты! Мда,...

Плюсы среды Visual Studio 2013 - C++
Я понимаю, что слегка не по теме.., НО.. курсовую написал на C++ и именно в VS 2013. Почему? Потому что такая привычка. Привык к этой...

Дана строка символов, заменить в ней все многоточия на плюсы - C++
пожалуйста!!!!помогите решить задачу дана строка символов.заменить в ней все многоточия на плюсы срочно.очень нужно!


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru