Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Каждому свое
530 / 216 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
1

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

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

Доброго времени суток, Господа. Тут перечитывал на досуге Мэйерса, он говорит, что std::function, хранящее замыкание лямбда-выражения, обычно использует больше памяти нежели объект, хранящий то же самое замыкание, только объявленный с помощью auto.
Я так и не понял, почему это происходит? И на сколько больше?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2018, 20:33
Ответы с готовыми решениями:

Class member function to std::function
Всем привет. Вопрос: почему 43 строка не работает? #include <functional> #include <iostream>...

Какая реализация лучше? std::pointer_to_binary_function vs std::function
Какая реализация (set_p или set_f) лучше /современнее / эффективнее ? pointer_to_binary_function в...

Использование std::function в std::thread
Нужно вызвать function fnc в новом потоке. Как сделать? function <void(vector<char>)> fnc; void...

Std::function and std::vector
Как положить обёртки в вектор? Не используя библиотеку boost. function<void(int)> first_func() =...

3
2418 / 1820 / 401
Регистрация: 15.12.2013
Сообщений: 7,937
04.01.2018, 20:47 2
Bretbas, вот вам пара ссылок для ознакомления:
Overhead with std::function
Efficient Use of Lambda Expressions and std::function

Добавлено через 5 минут
Цитата Сообщение от Bretbas Посмотреть сообщение
И на сколько больше?
Возьмите любимый компилятор и замерьте сами.
1
Эксперт С++
8554 / 4130 / 908
Регистрация: 15.11.2014
Сообщений: 9,327
07.01.2018, 17:48 3
Лучший ответ Сообщение было отмечено Новичок как решение

Решение

Цитата Сообщение от Bretbas Посмотреть сообщение
почему это происходит?
в первом случае - объект, который держит объект, который держит объект.
во втором случае - объект, который держит объект.
2
Каждому свое
530 / 216 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
07.01.2018, 17:57  [ТС] 4
hoggy, да да, уже разобрался. Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2018, 17:57

Некорректно работают функции Auto-Tone, Auto contrast, Auto color
Не корректно работают функции Auto-Tone, Auto contrast, Auto color. Вот пример (как на картинке)....

Boost::any and std::function
#include <iostream> #include <typeinfo> #include <functional> #include <boost/any.hpp> struct...

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

std::function любой аргумент
std::function&lt; ()&gt; generic_priner = (..){ return .. }; Как сделать так что бы...

Std::function на шаблонную функцию
Здравствуйте :) Делаю такую вещь: template &lt;typename T1, typename T2&gt; typename...

Объединение std::function в контейнер
Во многих ЯП есть делегаты. В случае с С++ у нас в распоряжении есть std::function, им можно...


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

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

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