逻辑功能词典

时间:2019-03-18 12:06:52

标签: c++ function dictionary logic

我想用c ++创建一个字典,在其中应该保留一个参考数字和一个与之相关的逻辑函数,我想可以像下面的示例一样:

map<int,..>func = {
   {1 = !},
   {2 = &&},
   {3 = ||}
};

有人对我如何实现这一目标有想法?

1 个答案:

答案 0 :(得分:4)

首先请注意,!&&||不是功能。它们是内置的运算符,因此您不能将它们存储在地图中。但是,您可以将函数存储在将这些运算符应用于其参数的映射中。

对于在布尔值上运行的二进制运算符,它是如此简单:

#include <iostream>
#include <functional>
#include <map>

std::map<int,std::function<bool(bool,bool)>> my_map{ 
    {1, [](bool a,bool b){ return a && b; } } 
};

int main(void) {
    std::cout << my_map[1](true,true);
}

但是,如果应该将运算符用于任意类型,则会涉及更多的工作,并且不清楚为什么要混合一元(!)和二进制运算符。