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

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

Сообщение 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);
}
Как этого добиться в cpp?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ain-in-cpp

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