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

Ленивые вычисления - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрица размером n*m. С помощью функций реализовать поиск и выборку определенных значений http://www.cyberforum.ru/cpp-beginners/thread916862.html
Буду очень признателен, если кто нибудь решит такую задачу: Дана матрица размером n*m. Нужно найти суммы элементов каждой её строки. Найти наибольшее и наименьшее значение суммы, а также определить в какой строке матрицы это значение найдено. Нужно использовать функции для суммирования элементов одномерного массива для нахождения минимума и максимума.
C++ std:: литература Подскажите, где можно почитать про стандартную библиотеку. http://www.cyberforum.ru/cpp-beginners/thread916855.html
одномерный массив C++
#include "stdafx.h" #include "stdio.h" #include "conio.h" #define eof -1 #define maxind 10 int _tmain(int argc, _TCHAR* argv) { int c; int nd; int i;
C++ Из файла записать данные в структуру данных
Скажите пожалуйста, как можно из файла записать данные в структуру данных? Я пробую fread, он не так работает Добавлено через 15 минут Со считывание разобрался, а можете помочь с тем чтобы данные записывать в разные элементы структуры
C++ std::regex : баг на сайте или баг компилятора? http://www.cyberforum.ru/cpp-beginners/thread916818.html
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через 35 секунд компилятор gcc 4.8
C++ Проверить решение задачи Здравствуйте! Я С++ изучаю самостоятельно, по книге Р.Лафоре "ООП в С++". В главе 7 "Массивы и строки" столкнулся с задачей Напишите функцию main(), которая получает случайные дробные числа от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат.. У меня не получается вычислить сумму значений. Компилятор говорит IntelliSense: отсутствует оператор... подробнее

Показать сообщение отдельно
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
03.07.2013, 10:25     Ленивые вычисления
____Много есть информации под boost, так же не отстает шарп и опережает всех хаскель. В плюсах только со стандарта C++0x. Даже попалась цельная Qt-шная библиотека для этого дела. Вообще концепция ленивых вычислений зародилась для функциональных языков. Но это все придумано, если возвращаться к C++, для удобства оперирования функторами и еще каких-то таинств. Но по сути же простые "ленивые вычисления" доступны во многих языках, компиляторы которых действуют по некоему принципу call by value. То есть когда значение получено, дальше его обсчитывать смысла нет. Если первый операнд операции && ложен, то вычислять следующие не нужно.
____Общий смысл "ленивых вычислений" в том, что экономится время на проведении вычислений, результаты которых заведомо не будут использованы в дальнейшем программой. Соответственно, за счет снижения объемов вычислений повышается и производительность программы, а за счет отсутствия необходимости хранить в памяти результаты вычислений снижаются и требования программы к памяти. Помимо этого, ленивые вычисления избавляют программиста от необходимости следить за тем, какие именно вычисления будут в дальнейшем востребованы программой, а какие, напротив, окажутся совершенно бесполезными. Последнее не всегда хорошо, учитывая опять же гибкость плюсов, в которых компилятор не даст, вопреки обычному подходу, поступать как заблагорассудится программисту. Но на то в принципе и расчет.

Принцип "ленивого вычисления" проще всего рассмотреть на следующем примере:
C++
1
if (A && B && C && D) {...}
C++
1
2
3
4
5
6
7
8
9
if (A) {
  if (B) {
    if (C) {
      if (D) {
        ...
      }
    }
  }
}
В первом случае не понятно, что, если A ложно, то и остальные вычисления происходить не будут. Во-втором же наглядно видно, что, при ложном A, тело первого оператора условия не будет выполнено.
Оба приведенных кода делают одно и то же. Отличие лишь в компромиссе между читабельностью кода и его объемом.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru