比较两个对象 - 严格弱
Comparing two objects - strict weak
我在比较以下类的对象时遇到问题:(只有字段是相关的)
class Rule{
private:
string _src_IP,
_src_port,
_dest_IP,
_dest_port,
_protocol; };
_src_IP和_dst_IP可以包含 IP 地址("0.0.0.0"-"255.255.255.255") 或"任何"。
_src_Port 和_dst_Port可以包含端口号 ("0" - "65535") 或"任何"。
_protocol可以包含"TCP"、"UDP"或"any"。
困难在于创建一个比较(运算符<和运算符>),它将满足严格弱排序的标准数学定义。和运算符>
如果有人能想到一些事情,那将是非常有帮助的。
我想你想在基于树的关联容器(如 std::map)中使用此结构作为键,并查找与特定值集匹配的规则(如果需要,使用"任何"匹配)。
但是,这是不可能的:严格的弱排序(对键的要求)意味着,虽然您不必能够分辨出每对不同的值,哪个值更大,但唯一允许的偏差是您可以创建组,其中您认为所有元素都相等。十进制整数的字符串表示就是一个例子:U "2" 和 "002" 彼此相等,尽管它们是不同的字符串。如果我在同一组中找到另一个等于一个字符串的字符串(例如"02",它被认为等于"2"),我可以确定它与该组中的所有字符串相等。
在您的设置中,您希望将 192.168.0.1->8.8.8.8:53/udp 视为等于 any->8.8.8.8:53/udp,因此它们必须位于同一组中。10.0.3.5->8.8.8.8:53/udp 也是如此,它也应该被视为等于 any->8.8.8.8/udp。如果是严格的弱排序,您还需要考虑 10.0.3.5->8.8.8.8:53/udp 等于 192.168.0.1->8.8.8.8:53/udp,这是您很可能不想要的。
- 如何返回一个类的两个对象相加的结果
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何在Qt中连接来自不同窗口的两个对象?
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- C++两个对象,其中包含指向同一数组不同部分的指针
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 绘制一个对象,比较模具缓冲区的两个不同值
- C++控制台应用,其中有两个冲突的对象不工作
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 当两个 std::map 对象相同时
- C++:在另外两个对象之间共享一个对象
- 为什么这两个卡片对象不等同?