c++11 - 将 RepeatedPtrField 分配给 protobuf 消息中的重复字段
问题描述
我有一个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
来完成这项工作,正如您在评论中提到的那样。
推荐阅读
- winforms - SkiaSharp:如何限制或降低大(4K)屏幕的绘图像素分辨率?
- php - 未定义索引但索引存在
- typescript - Typescript 类型中的嵌套三元条件扩展
- python - Get value from xml response in Python
- c# - EF Core:更新一对多关系依赖实体 id
- java - 没有可用的“javax.persistence.EntityManager”类型的合格 bean:
- python - python - 获取目录中文件名的最高数字
- c++ - Spirit X3,如何获取属性类型以匹配规则类型?
- rust - Is there a standard way of cyclically rotating mutable variables in Rust?
- cuda - How to reorder subarrays of fixed size inside a big 1D array in Thrust