如何在proto3中设置重复元素的重复

Posted

技术标签:

【中文标题】如何在proto3中设置重复元素的重复【英文标题】:How to set repeated of repeated elements in proto3 【发布时间】:2020-04-28 20:48:13 【问题描述】:

我的 .proto 中有这两个定义:

// all the shards on a server
message ConfigEntry 
  repeated Shard shards = 2;
  string server = 3;


// information on all the groups
message QueryResponse 
  repeated ConfigEntry config = 1;

在我的 c++ 文件中,我尝试在 QueryResponse 中设置这张地图:

std::map<std::string, std::vector<shard_t>> servers;

我找不到任何方法将我的地图中的值设置为在 QueryResponse 中进行配置,有什么想法吗?

【问题讨论】:

developers.google.com/protocol-buffers/docs/reference/… 【参考方案1】:

应该是这样的:

    for (auto const &item : servers)
  
    auto c = response->add_config();
    c->set_server(item.first);
    for (auto s : item.second)
    
      Shard *sh = c->add_shards();
      sh->set_lower(s.lower);
      sh->set_upper(s.upper);
    
  

我们调用 add_config() 来获取一个 ConfigEntry,我们将设置它的服务器名称,然后遍历向量并分别添加每个分片。

【讨论】:

以上是关于如何在proto3中设置重复元素的重复的主要内容,如果未能解决你的问题,请参考以下文章

C#WPF如何在由数据模板中的对象列表组成的列表框中设置项目[重复]

如何在用户通知中设置重复频率[重复]

如何在protobuf中设置重复字段至少重复一次

如何在 RSAParameters 中设置公钥 [重复]

如何在构建消息之前在 protobuf 中设置重复字段?

如何在 QWebEngineView 中设置背景图像 [重复]