如何在协议缓冲区中初始化排序和过滤重复的元素



我有一个

之类的消息
message Email {
    string id = 1;
    uint32 reply = 2;
}
message ListEmail {
    repeated Email email = 1;
}

在C 的功能中,我想对此进行排序和分页,类似于

void sortbyreply (size_t skip, size_t limit, ListEmail* listemail)

我可以在列表上迭代并复制到新的,但是有一种更聪明的方法吗?

要对ListeMail进行排序,您可以使用std :: sort

std::sort(
  listemail->mutable_email()->begin(),
  listemail->mutable_email()->end(),
  [](const Email& a, const Email& b) {
      return a.reply() > b.reply();
  }); 

Protobuf3中有一个可以修剪重复的字段的删除,不知道它是否有效

listemail->mutable_email()->DeleteSubrange(0,skip);
listemail->mutable_email()->DeleteSubrange(limit,listemail->email_size()-limit);

最新更新