我想用c ++创建一个字典,在其中应该保留一个参考数字和一个与之相关的逻辑函数,我想可以像下面的示例一样:
map<int,..>func = {
{1 = !},
{2 = &&},
{3 = ||}
};
有人对我如何实现这一目标有想法?
答案 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);
}
但是,如果应该将运算符用于任意类型,则会涉及更多的工作,并且不清楚为什么要混合一元(!
)和二进制运算符。