首页 > 解决方案 > protobuffers 中的重复字段是否保持插入的顺序?

问题描述

考虑以下消息。

message example { 
   repeated string text; 
}

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

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

稍后,如果我访问消息的文本,该字段的排序方式是否与我的列表相同?当我将它序列化并发送到某个地方时呢?

订单会保持不变吗?

标签: protocol-buffersprotobuf-c

解决方案


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

来自Google 的 Protocol Buffers 编码规范

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


推荐阅读