【问题标题】:What is the simplest way to compare two google::protobuf::Message objects with each other?比较两个 google::protobuf::Message 对象的最简单方法是什么?
【发布时间】:2012-05-31 11:35:44
【问题描述】:

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

我假设对象是相等的

  • 它们的描述包含具有相同字段编号和相应字段类型的字段。
  • 它们的反射具有相同的字段集(以及相同数量的重复字段)和相等的对应字段值。

我知道,我可以自己编写这样的比较函数,但可能已经有一些简单或预定义的解决方案?

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

【问题讨论】:

标签: c++ comparison protocol-buffers


【解决方案1】:

【讨论】:

    【解决方案2】:

    来自https://groups.google.com/d/msg/protobuf/5sOExQkB2eQ/ZSBNZI0K54YJ

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

    【讨论】:

    • 如果您的消息有地图类型字段。这可能行不通。
    【解决方案3】:

    我的经验告诉我,比较取决于消息结构。如果您有类似消息结构的深树,则不要比较是否必须快速完成。

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

    您可以使用一个刻度来获取重复字段的大小并进行比较。但是您仍然依赖于消息结构和大小。

    【讨论】:

      猜你喜欢
      • 2015-12-23
      • 2011-07-11
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多