将Protobuf消息中的RepeatedPtrField分配给重复字段

时间:2019-12-30 08:01:54

标签: c++11 protocol-buffers stdmove

我有一个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()

1 个答案:

答案 0 :(得分:1)

如果您正在使用Protobuf 3.6.0等新版本的Protobuf,则RepeatedPtrField定义move构造函数,您可以调用std::move来实现目标。

如果您使用的是旧版本,则必须调用Swap来完成工作,如注释中所述。