逻辑函数字典

Posted

技术标签:

【中文标题】逻辑函数字典【英文标题】:Dictionary of Logic Functions 【发布时间】:2019-08-08 19:10:57 【问题描述】:

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

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

有人知道我该如何实现这个吗?

【问题讨论】:

您希望逻辑运算符对布尔值或任何类型进行操作? 您打算如何使用它们?您必须以某种方式区分一元和二元运算符 我想对这些进行随机排序以创建随机布尔网络。 【参考方案1】:

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

对于布尔运算的二元运算符,就这么简单:

#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);

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

【讨论】:

这很好,但不是这个ideia。不能用字典来保留逻辑功能吗? @RitaCarolina 为什么不是这个主意? my_map 正在存储逻辑函数。请解释为什么这不是你想要的 @RitaCarolina 如果你有这样的想法,你将无法(至少不是没有很大的努力)启用类似于true my_map[1] true 的东西 @RitaCarolina 内置的布尔运算符&amp;&amp;! 等不是函数。他们是运营商。您不能将运算符存储在地图中。您可以存储功能(如this answer所示)。您仍然可以使用它来构建随机布尔网络。 @MaxLanghof 这可能是误解的一部分,更新了答案

以上是关于逻辑函数字典的主要内容,如果未能解决你的问题,请参考以下文章

License 许可序列号编译逻辑?

在 Firestore 中存储字典值时的逻辑问题

逻辑或查找表:最佳实践

我可以将行/模型映射到由 SQLAlchemy 中的枚举列(或字符串列上的逻辑)键入的字典吗?

Python字典遍历 未遍历所有元素

Oracle 11g R2 存储结构