C++ 比较两个google::protobuf::Message对象的最简单方法是什么?

C++ 比较两个google::protobuf::Message对象的最简单方法是什么?,c++,comparison,protocol-buffers,C++,Comparison,Protocol Buffers,我想比较两个任意的google::protobuf::Message对象 我假设物体在运动时是相等的 它们的描述包含具有相同字段编号和相应字段类型的字段 它们的反射具有相同的场集(以及相同数量的重复场)和相等的对应场值 我知道,我可以自己编写这样的比较函数,但可能已经有一些简单或预定义的解决方案了吗 另外,可能是我遗漏了一些关于这些对象不可比性的主要问题——我想知道是否如此。来自: 在C++中,可以序列化这两个字节并比较字节。 或者,您可以编写一些在字段上迭代的代码 通过反思和比较 你可以用

我想比较两个任意的
google::protobuf::Message
对象

我假设物体在运动时是相等的

  • 它们的描述包含具有相同字段编号和相应字段类型的字段
  • 它们的反射具有相同的场集(以及相同数量的重复场)和相等的对应场值
我知道,我可以自己编写这样的比较函数,但可能已经有一些简单或预定义的解决方案了吗

另外,可能是我遗漏了一些关于这些对象不可比性的主要问题——我想知道是否如此。

来自:

在C++中,可以序列化这两个字节并比较字节。 或者,您可以编写一些在字段上迭代的代码 通过反思和比较


你可以用这个。看看。

我的经验告诉我,比较取决于消息结构。如果您有一个深树状的消息结构,那么如果必须快速完成,就不要进行比较

例如,我有一个7节点的深层结构(不要问为什么),但对我来说,逐场比较是个好主意


您可以使用的一个勾号是获取重复字段的大小并进行比较。但这取决于消息的结构和大小

如果您的邮件具有映射类型字段,则可能重复。这可能行不通。