原型缓冲区中的重复字段是否保持插入顺序?

时间:2019-03-08 12:39:12

标签: protocol-buffers protobuf-c

考虑以下消息。

message example { 
   repeated string text; 
}

假设在C ++中,我有一个字符串列表,我将其插入到示例的文本字段中:

exemple aMessage; 
std::list<std::string> aList = ... ;
for (std::string anStr : aList) 
{
    aMessage.add_text(anStr);
}

稍后,如果我访问消息的文本,该字段的排序方式是否与列表相同?当我对其进行序列化并将其发送到某个地方该怎么办?

订单会保持不变吗?

1 个答案:

答案 0 :(得分:1)

是的,重复的字段保留了项目的顺序。

来自Google's Protocol Buffers encoding specification

  

尽管解析时相对于其他字段的顺序丢失了,但解析时会保留元素相对于彼此的顺序。