如何初始化协议缓冲区中的重复元素?
How to initialize a repeated element in protocol buffer?
假设我有这条消息。
message A {
repeated float w = 1 [packed = true];
}
如何在我的代码中初始化 w?我还能做得更好吗?
a = A()
for (int i = 0 ; i < n; ++i)
a.add_w(0);
a.w()
or a.mutable_w()
will return a google::protobuf::RepeatedField<float>
which provides some additional options.例如,您可以调用 a.mutable_w()->Reserve(n)
提前预分配 space,以避免每次大小加倍时重新分配的通常策略。您还可以使用 Resize(n)
后跟 mutable_data()
来直接访问底层缓冲区,但这可能不会比 Reserve(n)
后跟循环提供太多速度优势。
假设我有这条消息。
message A {
repeated float w = 1 [packed = true];
}
如何在我的代码中初始化 w?我还能做得更好吗?
a = A()
for (int i = 0 ; i < n; ++i)
a.add_w(0);
a.w()
or a.mutable_w()
will return a google::protobuf::RepeatedField<float>
which provides some additional options.例如,您可以调用 a.mutable_w()->Reserve(n)
提前预分配 space,以避免每次大小加倍时重新分配的通常策略。您还可以使用 Resize(n)
后跟 mutable_data()
来直接访问底层缓冲区,但这可能不会比 Reserve(n)
后跟循环提供太多速度优势。