小编Ned*_*ham的帖子

C++中运算符的函数指针

所以我有一个函数,希望函数指针作为输入,其原型如下所示:

int function(int (*op)(int, int));
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以为该函数指针传递一个运算符.特别是这个内置的运算符:

int operator|(int, int);
Run Code Online (Sandbox Code Playgroud)

我试过这个:

function(&(operator|));
Run Code Online (Sandbox Code Playgroud)

并得到这种错误:

error: no matching function for call to 'function(<unresolved overloaded function type>)'
Run Code Online (Sandbox Code Playgroud)

我试过这个:

function(&(operator|(int, int)));
Run Code Online (Sandbox Code Playgroud)

并得到这种错误:

error: expected primary-expression before 'int'
Run Code Online (Sandbox Code Playgroud)

我在文档中查找了这种情况,但是我得到了关于"地址"运算符(运算符&)而不是关于运算符地址的事情....

编辑:

请参阅上一个问题 在C++中显式调用原始运算符函数

c++ function-pointers operators

8
推荐指数
1
解决办法
1766
查看次数

快速算法来求积的布尔值之和

我正在尝试实现一个非常非常快的布尔表达式引擎。我使用它来表示非常大的状态空间中的状态,因此我需要它每秒处理尽可能多的操作。该引擎的根本是产品的总和。我遇到了一个优化NOT运算符的问题。例如,如果我有一个带有N个小项的乘积之和,每个小项都有大约M个变量,则尝试求反,将创建M ^ N个小项,然后使用espresso算法对其进行简化。如果在逆操作期间间歇运行espresso算法,则可以加快速度并节省一些内存,但这还不够。我怀疑自己是第一个遇到此问题的人,并且我尝试进行研究,但似乎找不到有效的方法来解决此问题。

有人能指出我正确的方向吗?

algorithm boolean-logic inverse

5
推荐指数
1
解决办法
344
查看次数