如何聚合protobuf消息
How to aggregate protobuf message
我有一个protobuf消息,如下所示:
message sample {
optional int32 value1 = 1;
optional int32 value2 = 2;
...
optional int64 valuen = n;
}
有很多对象,我想聚合这些对象。通常的方法是:
void aggregate(ample& msg1, sample& msg2) {
msg1.set_value1(msg1.value1() + msg2.value1());
msg1.set_value1(msg1.value2() + msg2.value2());
...
msg1.set_value1(msg1.valuen() + msg2.valuen());
}
有什么方法可以简化代码吗?我尝试了MergeFrom方法,但它替换了可选字段而不是添加。
协议缓冲区不是为这种操作而构建的。问题是,如果你有一个浅层次的消息结构,那么它是可以的,如果你不确定每次你必须更改消息结构时会产生问题的消息结构。
如果你有两条消息,并且你想把它们的结构连接在一起,但你不想这样,MergeFrom是很好的。
您可以使用一个重复字段(stdvector(来存储元素并聚合它们。
相关文章:
- 从 Any 包中提取和匹配 protobuf 消息类型名的首选方法
- protobuf,如何在protobuf消息中遍历所有集合字段,我不知道详细信息?(C++)
- 如何聚合protobuf消息
- protobuf c++生成消息而不是MessageLite
- C ++使用开关/大小写解析protobuf消息(减少重复代码)
- 编写多个 protobuf 消息:1 条具有 1 个重复属性的消息或编写不同的消息
- C++ protobuf:如何通过"SerializeToOstream()"将多条消息写入文件
- 动态生成Protobuf消息并将指针返回到它
- 在C++中更改现有protobuf消息的元素
- 为什么 protobuf 只读取最后一条消息作为输入结果
- 在消息Protobuf中提交消息的设置
- 将在64位应用程序中编码Protobuf消息并在32位应用程序中解码
- 解析来自固定大小字节缓冲区的连续块的protobuf消息序列
- C++中protobuf消息的长度前缀
- 是否可以在 protobuf 中发送编译的 protobuf 消息定义
- 如何在 protobuf 中使用反射将预分配的消息设置为字段C++
- 在 protobuf 中处理可选消息的正确方法是什么
- 遍历所有字段并在 protobuf 消息中获取它们的值
- 动态创建新的 protobuf 消息
- protobuf-net 中的动态 protobuf 消息