小编cor*_*ail的帖子

通过Python将C++对象传递给C++代码?

我用C++编写了一些物理仿真代码,解析输入文本文件是它的一个瓶颈.作为输入参数之一,用户必须指定一个数学函数,该函数将在运行时多次评估.C++代码有一些预先定义的函数类(它们在数学方面实际上非常复杂)和一些有限的解析能力但我对这种结构完全不满意.

我需要的是算法和函数评估都保持快速,因此将它们保存为编译代码(最好是数学函数作为C++函数对象)是有利的.然而,我想到将整个模拟与Python粘合在一起:用户可以在Python脚本中指定输入参数,同时在Python中实现存储,结果可视化(matplotlib)和GUI.

我知道大多数时候,暴露C++类可以完成,例如使用SWIG,但我仍然有一个关于在Python中解析用户定义的数学函数的问题:

有可能以某种方式在Python中构造一个C++函数对象并将其传递给C++算法吗? 比如我打电话的时候

f = WrappedCPPGaussianFunctionClass(sigma=0.5)
WrappedCPPAlgorithm(f)
Run Code Online (Sandbox Code Playgroud)

在Python中,它会返回一个指向C++对象的指针,然后将其传递给需要这样一个指针的C++例程,或类似的东西......(在这种情况下,不要问我有关内存管理的问题,但是:S)

关键是应该在算法中对Python代码进行回调.后来我想扩展这个例子,也可以在Python端进行一些简单的表达式解析,比如求和或函数的乘积,然后返回一些复合,像C++对象一样的解析树,但现在让我们继续保持基础.

对不起,长期发布的帖子和thx的建议提前.

c++ python functor word-wrap

6
推荐指数
1
解决办法
819
查看次数

C99 const pass-by-value

我一直在研究GNU Scientific Library的源代码,我一直看到以下类型的声明:

double cblas_ddot (const int N, const double * x, const int incx, const double * y, const int incy)
Run Code Online (Sandbox Code Playgroud)

C99中,是否有任何(优化)好处来声明通过值传递的参数(例如,Nincy在上面的示例中)const?无论如何都有一个由它们制成的副本,因为它们是通过价值传递的,不是吗?

谢谢!科内尔

c const c99 pass-by-value

6
推荐指数
1
解决办法
2039
查看次数

标签 统计

c ×1

c++ ×1

c99 ×1

const ×1

functor ×1

pass-by-value ×1

python ×1

word-wrap ×1