如何初始化协议缓冲区中的重复元素

How to initialize a repeated element in protocol buffer?

本文关键字:元素 缓冲区 初始化 协议      更新时间:2023-10-16

假设我有这个消息。

message A {
  repeated float w = 1 [packed = true];
}

如何在我的代码中初始化w ?我还能做得更好吗?

a = A()    
for (int i = 0 ; i < n; ++i) 
   a.add_w(0);

a.w()a.mutable_w()将返回提供一些额外选项的google::protobuf::RepeatedField<float>。例如,您可以调用a.mutable_w()->Reserve(n)来提前预分配空间,以避免每次大小加倍时重新分配的通常策略。您也可以使用Resize(n)后跟mutable_data()来直接访问底层缓冲区,但这可能不会比Reserve(n)后跟循环提供太多的速度优势。