在 C++ 中,我希望实现一个运算符,用于根据 B 完全包含在 A 中来选择列表(B 类型)中的项目。
在 Montgomery Phister jr(1958 年出版)的《数字计算机的逻辑设计》一书中,第 54 页,它说:
F11 = A + ~B 有两个有趣且有用的关联,它们都与计算机设计无关。第一个是蕴涵的逻辑符号……第二个是包含符号……这可以用一个熟悉的关系来表达,B < A; 或由“B包含在A中”的陈述;或通过布尔方程 F11= A + ~B = 1。
我最初的实现是在 C 中。回调被提供给列表以用于此类操作。一个示例是整数列表,以及包含两个整数 min 和 max 的结构,用于选择目的。
在那里,选择将基于 B >= A->min && B <= A->max。
使用 C++ 和模板,在使用 void 指针和回调在 C 中实现通用列表之后,您将如何处理这个问题?
是否出于此类目的使用 < 作为重载运算符... <ugh> 邪恶?</ug>
(或通过使用 B 类作为选择标准,通过重载 > 来实现比较?)
编辑:我对列表节点的实现包含一个用于标记项目选择的成员。
关于集合和唯一性,列表中的数据可能会包含一个成员指定沿时间线的位置,鉴于这是主要选择标准之一,使用术语集可能会产生误导,因为没有保证关于位置的唯一性沿着时间线——即事件可以同时发生。