【问题标题】:Assign RepeatedPtrField to repeated field in a protobuf message将 RepeatedPtrField 分配给 protobuf 消息中的重复字段
【发布时间】:2020-04-19 00:05:45
【问题描述】:

我有一个 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()之类的优化。

【问题讨论】:

  • 我做了state.mutable_table()->Swap(&table);,其中表是RepeatedPtrField,它工作

标签: c++11 protocol-buffers stdmove


【解决方案1】:

如果您使用的是新版本的 Protobuf,例如 Protobuf 3.6.0,RepeatedPtrField 定义了移动构造函数,您可以调用 std::move 来实现您的目标。

如果您使用的是旧版本,您必须致电 Swap 来完成这项工作,正如您在评论中提到的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2019-12-22
    • 2018-12-18
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多