将 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 来完成这项工作,正如您在评论中提到的那样。