指向多值函数的常规指针
General pointer to multi-valued function
我正在尝试在 c++ 中创建一个有点通用的单变量集成例程。我编写了一个自适应正交,它接受指向单个变量函数的指针,如下所示:
typedef complex<double> cd;
cd GaussIntegrate(cd (*f) (cd),cd zmin,cd zmax);
但是,我想将其扩展到一般的多变量函数。集成仍将基于单个变量,但我想允许函数依赖于多个变量,例如
cd GaussIntegrate(cd (*f) (cd, ...),cd zmin,cd zmax);
例如,我可以使用func(cd)或func(cd,double,int)作为集成函数。
但是,我不知道创建此类模板的最佳方法是什么。应该有一种方法可以指定其余参数,因此
而不是GaussIntegrate(&function,zmin,zmax);
我也应该能够写一些类似的东西
GaussIntegrate(&function(param2,param3),zmin,zmax);
现在我正在通过桥接单变量函数来做到这一点,我将其余参数指定为全局参数,但这是一个非常不优雅的解决方案。有人能给我一个更好的吗?
谢谢
一月
您可以使用可变参数模板:
typedef complex<double> cd;
template <typename... Args>
cd GaussIntegrate(cd (*f) (cd, Args...),cd zmin,cd zmax, Args... args)
{
//Call your function like this:
f(zmin, std::forward<Args>(args)...);
//Do other things as needed...
return 0;
}
然后你可以像这样调用你的函数:
GaussIntegrate(f,zmin,zmax, param2, param3); //Where param2 and param3 will be forwarded to your function f
param2
和 param3
可以是任何类型的,只要它们与 f 的期望相匹配。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- C++常规指针函数或模板
- 指向符号的指针与常规符号查找的 ABI 稳定性
- 如何在C++中实现常规指针类型
- 将shared_ptr转换为常规指针
- 获取指针和常规整数的奇怪值
- 指向数组的指针在 STL 和常规 for 循环中有所不同
- 函数指针和常规调用的区别
- 为什么在链表中使用指向结构的指针而不是常规结构类型变量呢
- 指向多值函数的常规指针
- 如何使用常规函数指针作为模板参数
- 将指向结构成员变量的(常规)指针转换为指向整个结构的指针
- 没有标准的方法来比较智能指针和常规指针
- 我可以总是用常规指针代替输入迭代器吗
- 我如何决定是使用指针还是常规变量
- 有什么区别?指向数组与常规数组的指针
- 如何获取常规函数指针作为 C++ 类的私有成员
- 同时具有指针类型和常规类型的类模板