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

C++

Войти
Регистрация
Восстановить пароль
 
Bretbas
Каждому свое
351 / 121 / 32
Регистрация: 05.08.2013
Сообщений: 1,302
Завершенные тесты: 1
#1

Std::function vs auto Скотт Мэйерс - C++

04.01.2018, 20:33. Просмотров 147. Ответов 3
Метки нет (Все метки)

Доброго времени суток, Господа. Тут перечитывал на досуге Мэйерса, он говорит, что std::function, хранящее замыкание лямбда-выражения, обычно использует больше памяти нежели объект, хранящий то же самое замыкание, только объявленный с помощью auto.
Я так и не понял, почему это происходит? И на сколько больше?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2018, 20:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Std::function vs auto Скотт Мэйерс (C++):

Std::function<>::target() возвращает 0 - C++
Привет! Не удовольствия для, а фриланса ради пришлось работать с WinAPI. Всем известно, что это чистый С. Так вот захотел я привязать...

std::string, std::fstream, ошибка кучи - C++
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString. Замечательно, то же самое... ошибка при...

как проинициализировать std::stack<const int> obj ( std::stack<int>{} ); - C++
добрый день. вопрос в коде: http://rextester.com/VCVVML6656 #include &lt;iostream&gt; #include &lt;stack&gt; //-std=c++14...

std::filesystem && std::asio и пр - C++
Пытался найти хоть какие-то сроки включения всего этого в стандарт (так же ожидается lexical_cast, any, string_algo и т.д.) и вообщем везде...

Лямбда не допускает auto - C++
Всем привет! Имеем код: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;numeric&gt; int...

Ошибка: E2034 Cannot convert 'int' to 'std::vector<std::vector<TRabbitCell,std::allocator<TRabbitCell>>... - C++ Builder
Есть двухмерный вектор: std::vector&lt;std::vector&lt;TRabbitCell&gt; &gt; *cells(5, 10); Пытаюсь заполнить его объектами класса...

3
S_el
2118 / 1643 / 309
Регистрация: 15.12.2013
Сообщений: 6,446
04.01.2018, 20:47 #2
Bretbas, вот вам пара ссылок для ознакомления:
Overhead with std::function
Efficient Use of Lambda Expressions and std::function

Добавлено через 5 минут
Цитата Сообщение от Bretbas Посмотреть сообщение
И на сколько больше?
Возьмите любимый компилятор и замерьте сами.
1
hoggy
6767 / 2952 / 509
Регистрация: 15.11.2014
Сообщений: 6,650
Завершенные тесты: 1
07.01.2018, 17:48 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Bretbas Посмотреть сообщение
почему это происходит?
в первом случае - объект, который держит объект, который держит объект.
во втором случае - объект, который держит объект.
2
Bretbas
Каждому свое
351 / 121 / 32
Регистрация: 05.08.2013
Сообщений: 1,302
Завершенные тесты: 1
07.01.2018, 17:57  [ТС] #4
hoggy, да да, уже разобрался. Спасибо
0
07.01.2018, 17:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2018, 17:57
Привет! Вот еще темы с ответами:

Перевод строк std::string, std::wstring в Unicode (String) - C++ Builder
Собственно столкнулся с проблемой, как корректно перевести к примеру текст из Edit1-&gt;Text в std::string или std::wstring и соответственно...

Какая реализация лучше? std::pointer_to_binary_function vs std::function - C++
Какая реализация (set_p или set_f) лучше /современнее / эффективнее ? pointer_to_binary_function в С++11 объявлен как deprecated. Правильно...

Использование std::function в std::thread - C++
Нужно вызвать function fnc в новом потоке. Как сделать? function &lt;void(vector&lt;char&gt;)&gt; fnc; void test(vector&lt;char&gt; data) { for...

Std::function and std::vector - C++
Как положить обёртки в вектор? Не используя библиотеку boost. function&lt;void(int)&gt; first_func() = one(); function&lt;void(int)&gt;...


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

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

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