Я пытаюсь вставить элемент в начало списка сообщений protobuf. add_foo
добавляет элемент в конец. Есть ли простой способ вставить его в начале?Вставка элемента в начало списка protobuf
3
A
ответ
6
Нет встроенного способа сделать это с помощью буферов протокола AFAIK. Конечно, 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';
Смежные вопросы
- 1. Вставка связанного списка в начало
- 2. Вставка узла в начало связанного списка
- 3. Вставка в начало связанногоList C++
- 4. Вставка элемента в конце списка в C
- 5. Вставка элемента в конец двусвязного списка
- 6. Добавление элемента в начало массива.
- 7. Вставка элемента перед каждым элементом списка
- 8. Как добавить флажок в начало элемента списка в HTML без изменения размера элемента списка
- 9. Добавление элемента в начало связанного списка в C
- 10. Простой синтаксис для приведения элемента списка в начало в python?
- 11. Как перенести последние два элемента списка в начало в C#?
- 12. Java: перемещение элемента из индекса в начало связанного списка?
- 13. Добавление элемента в начало элемента группы
- 14. protobuf-net: сериализация пустого списка
- 15. Добавление элемента в начало div
- 16. Добавление элемента в начало LongListSelector
- 17. Вставка элемента в @ Html.DropdownList
- 18. Вставка элемента в кортеж
- 19. Вставка элемента в deque
- 20. Вставка элемента в список
- 21. Вставка элемента в ItemControl
- 22. Вставка элемента в TCL
- 23. Поверните начало элемента HTML
- 24. Вставка элемента в связанный список
- 25. Изменение элемента существующего сообщения protobuf в C++
- 26. Вставка элемента в определенный список вложенного списка PYTHON CLOSED
- 27. Вставка элемента между двумя элементами из списка в Java
- 28. Python В начало списка доз
- 29. Начало нумерованного списка в Haml
- 30. Перемещение SiteMapNode в начало списка