Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

Накладные расходы при создании лямбды - C++

21.06.2014, 20:41. Просмотров 215. Ответов 1
Метки нет (Все метки)

Имеет смысл создавать лямбда функцию таким образом:
C++
1
static const auto lam = [](){  /* много строк */  };
Получается так она разместится в read only памяти и не будет каждый раз создаватся при её вызове? ( здесь имею ввиду лямбда функции, которые создаются внутри функции, а не которые передаются вызываемой функции в виде предиката)

Или они считаются обычными функциями и компилятор/линковщик уже сам оставляет единственный экземпляр лямбды у себя где-нибудь в сегменте инструкций, а не данных?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 20:41     Накладные расходы при создании лямбды
Посмотрите здесь:

Лямбды C++
C++ Захват const переменной из лямбды: разный результат в g++ и clang
C++ Лямбды в списке инициализации членов
C++ Допускается ли такое использование лямбды
Можно ли писать вложенные лямбды? (с++11) C++
Конструктор при создании через [] C++
C++ Тело лямбды. Двумерный массив
C++ Прокомментировать код функций, генерирующих другие функции (лямбды)
Не компилится из-за лямбды C++
C++ Как вернуть значение лямбды?
ошибка при создании массива C++
Как создать псевдоним для лямбды? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.06.2014, 21:01     Накладные расходы при создании лямбды #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от gromo Посмотреть сообщение
и не будет каждый раз создаватся при её вызове?
Что Вы под этим понимаете? Можно подумать при вызове лямбды без static имени происходит чуть ли не компиляция на лету в процессе выполнения кода. Лямбы - это всего лишь синтаксический сахар для создания неименованных функций, т.е. в итоге просто используется обычный указатель на функцию (но она в любом случае расположена в сегменте кода). Без каких-либо дополнительных существенных расходов со стороны производительности.
Yandex
Объявления
21.06.2014, 21:01     Накладные расходы при создании лямбды
Ответ Создать тему
Опции темы

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