Буферы протокола напрямую обрабатывает намеренно небольшое количество конструкций;векторы хорошо отображаются на «повторяющийся» тип элемента, но как это представляется в C ++ - с помощью методов «add» - вы не (AFAIK) просто вручаете ему вектор.См. «Повторяющиеся поля вложенных сообщений» здесь для получения дополнительной информации.
Re map;для этого нет встроенного механизма , но пара ключ / значение легко представляется в .proto (обычно key = 1, value = 2), а затем обрабатывается с помощью «repeat».
Кажется, что shared_ptr не имеет большого значения в сериализованном файле.Но объект может обрабатываться (предположительно) как сообщение.
Обратите внимание, что в версии Google C ++ создается слой DTO, поэтому вам может потребоваться отобразить между ними и любым существующим объектоммодель.Обычно это довольно тривиально.
Для некоторых языков / платформ существуют варианты protobuf, которые работают с существующими объектными моделями.
(извините, я не могу комментировать вопросы по теме - я не знакомс этим)