将 RepeatedPtrField 分配给 protobuf 消息中的重复字段
Assign RepeatedPtrField to repeated field in a protobuf message
我有一个 RepeatedPtrField<M::Table>
和一个 protobuf 消息 M 为:
message M {
message Table {
optional string guid = 1;
optional int64 schema_version = 2;
optional int64 data_version = 3;
repeated Column column = 4;
}
repeated Table table = 1;
}
如何创建具有 RepeatedPtrField 内容的 M 实例。我可以写一个for循环来明确地复制数据,但我目前正在寻找更简洁的东西,最好使用std::move()
之类的优化。
如果您使用的是新版本的 Protobuf,例如 Protobuf 3.6.0,RepeatedPtrField
定义了移动构造函数,您可以调用 std::move
来实现您的目标。
如果您使用的是旧版本,您必须调用 Swap
来完成这项工作,正如您在评论中提到的那样。
我有一个 RepeatedPtrField<M::Table>
和一个 protobuf 消息 M 为:
message M {
message Table {
optional string guid = 1;
optional int64 schema_version = 2;
optional int64 data_version = 3;
repeated Column column = 4;
}
repeated Table table = 1;
}
如何创建具有 RepeatedPtrField 内容的 M 实例。我可以写一个for循环来明确地复制数据,但我目前正在寻找更简洁的东西,最好使用std::move()
之类的优化。
如果您使用的是新版本的 Protobuf,例如 Protobuf 3.6.0,RepeatedPtrField
定义了移动构造函数,您可以调用 std::move
来实现您的目标。
如果您使用的是旧版本,您必须调用 Swap
来完成这项工作,正如您在评论中提到的那样。