我想比较两个任意google::protobuf::Message
对象。
我假设对象是相等的
- 它们的描述包含具有相同字段编号和相应字段类型的字段。
- 它们的反射具有相同的字段集(以及相同数量的重复字段)和相等的相应字段值。
我知道,我可以自己编写这样的比较函数,但可能已经有一些简单或预定义的解决方案?
另外,我可能遗漏了一些关于此类对象不可比性的主要问题——我想知道是不是这样。
我想比较两个任意google::protobuf::Message
对象。
我假设对象是相等的
我知道,我可以自己编写这样的比较函数,但可能已经有一些简单或预定义的解决方案?
另外,我可能遗漏了一些关于此类对象不可比性的主要问题——我想知道是不是这样。
来自https://groups.google.com/d/msg/protobuf/5sOExQkB2eQ/ZSBNZI0K54YJ:
在 C++ 中,您可以将两者序列化并比较字节。或者,您可以编写一些代码,通过反射遍历字段并比较它们。
我的经验告诉我,比较取决于消息结构。如果您有类似消息结构的深树,那么不要比较是否必须快速完成。
例如,我有一个 7 个节点的深度结构(不要问为什么),但对我来说,逐个字段比较是个不错的主意。
您可以使用的一个刻度是获取重复字段的大小并进行比较。但是您仍然依赖于消息结构和大小。