gpt4 book ai didi

c++ - 在 protobuf 列表的开头插入一个项目

转载 作者:太空狗 更新时间:2023-10-29 20:05:49 25 4
gpt4 key购买 nike

我正在尝试在 protobuf 消息列表的开头插入一个项目。 add_foo 将项目附加到末尾。有没有一种简单的方法可以在开头插入它?

最佳答案

据我所知,protocol buffers 没有内置的方法来做到这一点。当然是 docs似乎没有指示任何此类选项。

一种相当有效的方法可能是像往常一样在末尾添加新元素,然后反向遍历元素,将新元素交换到前一个元素的前面,直到它位于列表的前面。所以例如对于像这样的 protobuf 消息:

message Bar {
repeated bytes foo = 1;
}

你可以这样做:

Bar bar;
bar.add_foo("two");
bar.add_foo("three");

// Push back new element
bar.add_foo("one");
// Get mutable pointer to repeated field
google::protobuf::RepeatedPtrField<std::string> *foo_field(bar.mutable_foo());
// Reverse iterate, swapping new element in front each time
for (int i(bar.foo_size() - 1); i > 0; --i)
foo_field->SwapElements(i, i - 1);

std::cout << bar.DebugString() << '\n';

关于c++ - 在 protobuf 列表的开头插入一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com