Функциональное преобразование с переменным количеством аргументов во что-то простое на C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функциональное преобразование с переменным количеством аргументов во что-то простое на C++

Сообщение Anonymous »

Мне нужно сделать что-то вроде этого:
У меня есть большой решатель «черного ящика» (f, ...), который принимает функцию (например) как ввод:

Код: Выделить всё

double f(x, a, b, c) {
return 0.0
}
A, b, c меняются, и решатель может это обнаружить.
На самом деле это не очень просто использовать, поскольку если У меня есть 100 параметров, мне нужно написать что-то вроде:

Код: Выделить всё

double f(x, a_0, a_1, ..., a_99) {
return 0.0;
}
Я хочу написать удобную для пользователя вариативную функцию, например

Код: Выделить всё

// Variadic function (general form)
template 
double f(double x, Args... args) {
const double z = (x - std::get(std::make_tuple(args...))) / std::get(std::make_tuple(args...));
return std::get(std::make_tuple(args...)) * std::exp(-0.5 * z * z);
}
который можно преобразовать в это для передачи решателю:

Код: Выделить всё

double gaussian(double x, double a, double b, double c) {
const double z = (x - b) / c;
return a * std::exp(-0.5 * z * z);
}
Как этого добиться на C++?

Подробнее здесь: https://stackoverflow.com/questions/792 ... plain-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»