如何初始化排序和过滤协议缓冲区中的重复元素?
How to initialize a sort and filter repeated element in protocol buffer?
我有一条消息
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)
我可以遍历列表并复制到一个新列表,但是有没有更聪明的方法来做到这一点?
要对邮件列表进行排序,您可以使用 std::sort
std::sort(
listemail->mutable_email()->begin(),
listemail->mutable_email()->end(),
[](const Email& a, const Email& b) {
return a.reply() > b.reply();
});
protobuf3中有一个DeleteSubrange可以剪掉重复的字段,不知道是否有效
listemail->mutable_email()->DeleteSubrange(0,skip);
listemail->mutable_email()->DeleteSubrange(limit,listemail->email_size()-limit);
我有一条消息
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)
我可以遍历列表并复制到一个新列表,但是有没有更聪明的方法来做到这一点?
要对邮件列表进行排序,您可以使用 std::sort
std::sort(
listemail->mutable_email()->begin(),
listemail->mutable_email()->end(),
[](const Email& a, const Email& b) {
return a.reply() > b.reply();
});
protobuf3中有一个DeleteSubrange可以剪掉重复的字段,不知道是否有效
listemail->mutable_email()->DeleteSubrange(0,skip);
listemail->mutable_email()->DeleteSubrange(limit,listemail->email_size()-limit);