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

Умная Функция - C++

Восстановить пароль Регистрация
 
Аиас
 Аватар для Аиас
17 / 17 / 1
Регистрация: 13.02.2011
Сообщений: 107
21.04.2011, 20:40     Умная Функция #1
Есть функция которая в зависимости от входных параметров, делает сложные вычисления, а потом выдаёт результат.
Как можно реализовать, чтобы функция проверяла, запрашивался ли этот ряд входных параметров ранее, и если да то выдавать уже готовый результат, который был вычислен ранее, а если нет, то уже производить вычисления полностью?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2011, 20:40     Умная Функция
Посмотрите здесь:

C++ Функция...
C++ Функция
C++ Функция
функция C++
Функция с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.04.2011, 20:46     Умная Функция #2
Возможно, хранить статический список списков входных параметрови и при каждом вызове сверять входной список со всем узлами статического, и при совпадении выдавать вычисленный результат (его в том же списке хранить). Можно даже ассоциативный контейнер заюзать какой-нибудь.
while(i)k++
48 / 48 / 5
Регистрация: 13.08.2010
Сообщений: 160
21.04.2011, 20:50     Умная Функция #3
в С++ есть такое понятие как static переменная на уровне функции, такая переменная сохраняет свое значение между вызовами функции
чот типо
class tmp
{
public:
tmp(int _a, int _b): a(_a), b(_b){}
int a;
int b;
bool operator==(const tmp& x, const tmp& y)
{
return x.a == y.a && x.b == y.b;
}
}
int f(int a, int b)
{
static dictionary<tmp, int> d;
if(!d.contayns(tmp(a,b)))d.add(tmp(a,b), a+b);
return d[tmp(a,b)];
} //не помню как там dictionary в С++ юзается, но суть думаю ясна
Аиас
 Аватар для Аиас
17 / 17 / 1
Регистрация: 13.02.2011
Сообщений: 107
21.04.2011, 21:06  [ТС]     Умная Функция #4
Цитата Сообщение от silent_1991 Посмотреть сообщение
Возможно, хранить статический список списков входных параметрови и при каждом вызове сверять входной список со всем узлами статического, и при совпадении выдавать вычисленный результат (его в том же списке хранить). Можно даже ассоциативный контейнер заюзать какой-нибудь.
Думаю можно попробовать, я сам об этом думал, но не хотелось бы перебирать этот список параметров прямым перебором, если это массив. А ассоциативный контейнер это хорошая идея, только надо будет с ним еще разобраться по лучше.
+
+
[B]2: while(i)k++[B] - Спасибо, буду разбираться!
Yandex
Объявления
21.04.2011, 21:06     Умная Функция
Ответ Создать тему
Опции темы

Текущее время: 16:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru