3
假设我有这个消息。如何初始化协议缓冲区中的重复元素?
message A {
repeated float w = 1 [packed = true];
}
如何在我的代码中初始化w?我能做得比这更好吗?
a = A()
for (int i = 0 ; i < n; ++i)
a.add_w(0);
假设我有这个消息。如何初始化协议缓冲区中的重复元素?
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)
之后的循环提供更多的速度优势。