我想问一下可以在C ++ ex。中定义自定义运算符:
Func function;
double a[2] = {-3, 3};
function = function integrate a;
注意:整合是在区间< -3,3>上进行数值积分的算子。
我真的对如何创建自己的运营商感兴趣。
感谢您的回复和时间。 马里
答案 0 :(得分:3)
为什么不为集成方法编写一个类(可能是完整的类层次结构)或函数也足够了。然后给它想要作为参数集成的函数(使用std::function将允许它成为函数指针,函子或lambda表达式)和集成的范围。这是我最近这样做的方式。例如在1D:
#include <functional>
#include <iostream>
double integrate(std::function<double(double)> f, double a, double b)
{
return (b-a)/2.0*(f(a)+f(b));
}
int main()
{
std::cout << integrate([](double x){ return x*x;}, -3.0, 3.0) << std::endl;
return 0;
}
答案 1 :(得分:1)
您无法创建集成运算符。您可以创建一个集成的功能
#include <functional>
typedef std::function<double(double)> Function;
double integrate(Function func, double a[])
{
double result = 0.0;
//do numeric integration
return result;
}
double my_func(double x)
{
return x * x;
}
int main()
{
double a[] = {-3.0, 3.0};
const double result = integrate(my_func, a);
return 0;
}
答案 2 :(得分:0)
您无法定义自定义运算符。 您只能更改现有的含义。 但优先级和分组将保留原始运算符。