Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|||||||||||
1 | |||||||||||
Ленивые вычисления03.07.2013, 10:25. Показов 10657. Ответов 27
____Много есть информации под boost, так же не отстает шарп и опережает всех хаскель. В плюсах только со стандарта C++0x. Даже попалась цельная Qt-шная библиотека для этого дела. Вообще концепция ленивых вычислений зародилась для функциональных языков. Но это все придумано, если возвращаться к C++, для удобства оперирования функторами и еще каких-то таинств. Но по сути же простые "ленивые вычисления" доступны во многих языках, компиляторы которых действуют по некоему принципу call by value. То есть когда значение получено, дальше его обсчитывать смысла нет. Если первый операнд операции && ложен, то вычислять следующие не нужно.
____Общий смысл "ленивых вычислений" в том, что экономится время на проведении вычислений, результаты которых заведомо не будут использованы в дальнейшем программой. Соответственно, за счет снижения объемов вычислений повышается и производительность программы, а за счет отсутствия необходимости хранить в памяти результаты вычислений снижаются и требования программы к памяти. Помимо этого, ленивые вычисления избавляют программиста от необходимости следить за тем, какие именно вычисления будут в дальнейшем востребованы программой, а какие, напротив, окажутся совершенно бесполезными. Последнее не всегда хорошо, учитывая опять же гибкость плюсов, в которых компилятор не даст, вопреки обычному подходу, поступать как заблагорассудится программисту. Но на то в принципе и расчет. Принцип "ленивого вычисления" проще всего рассмотреть на следующем примере:
Оба приведенных кода делают одно и то же. Отличие лишь в компромиссе между читабельностью кода и его объемом.
2
|
03.07.2013, 10:25 | |
Ответы с готовыми решениями:
27
Ленивые вычисления в C++ Получение i-ого элемента массива без вычисления всех элементов (Ленивые вычисления) Ленивые вычисления Ленивые вычисления или "я что-то пропустил и в c# есть ссылки на строки?" |
Неэпический
|
|
03.07.2013, 10:37 | 3 |
Не понял, Вы хотите сказать, что "ленивость" появилась в плюсах только начиная с C++0x?
Добавлено через 2 минуты Смотря чем являются эти A,B,C,D
0
|
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,500
|
|||||||||||
03.07.2013, 10:42 | 5 | ||||||||||
соврал ведь я думал о порядке вычисления а про условие не подумал
вот так должно выглядеть
0
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
||||||
03.07.2013, 10:49 [ТС] | 7 | |||||
Не совсем:
Честно сказать, я тут не до конца разобрался.
Положим функциями:
Да ни в чем. ) Хочется обсудить. Все верно описно?
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
03.07.2013, 11:41 | 9 | |||||
show me example
Добавлено через 24 минуты Собственно, сам родил:
Если убрать operator&& из класса, то operator() вызовется только для a1.
0
|
Неэпический
|
|
03.07.2013, 11:53 | 10 |
Наверное, одним из самых важных аргументов будет то, что эти операторы являются
тогда как operator||уже таким не будет. Для примера, вот просто, банально и бездарно: http://ideone.com/R1p7Oo
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
03.07.2013, 13:59 | 17 |
Croessmah, а что если http://en.wikibooks.org/wiki/M... /Safe_bool ?
1
|
Неэпический
|
|
03.07.2013, 18:31 | 20 |
Не заметил Чтобы не говорили, но в 11 стандарте появилось много плюшек.
0
|
03.07.2013, 18:31 | |
03.07.2013, 18:31 | |
Помогаю со студенческими работами здесь
20
Ленивые работники и что с этим делать Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k. Составить программу вычисления значения функции для вычисления и вывода на печать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |