Я использую плоские буферы для сериализации группы данных класса, используя API "native struct" из --gen-obj-api для заполнения объекта плоского буфера, так как его было проще всего использовать в моем текущем коде, и я этого не делаютак же заботиться о скорости при написании.Однако при десериализации на стороне чтения я использую стандартные API плоского буфера, поскольку для этого не требуется создавать объекты C ++, и я могу напрямую использовать указатели для более быстрого времени загрузки.
Мои вопросы:
При сериализации на стороне записи я использую сгенерированные методы GeneratedClass :: Pack () для сериализации нативной структуры и всех ее подэлементов, как бы там ни былоПохоже, это не способ оптимизации.Под этим я подразумеваю вызовы, такие как CreateSharedString, CreateVectorOfSortedTables и т. Д. В идеале я хотел бы, чтобы эти оптимизации выполнялись автоматически, чтобы я мог воспользоваться возможностями «карты» для поиска элементов по ключу и снижения требований к хранилищу для повторяющихся имен строк,Есть ли способ сделать это с помощью этих API Pack ()?Я полагаю, что сортировку можно выполнить вручную, просто отсортировав std :: vectors перед вызовом Pack, но я не вижу способа обойти оптимизацию SharedString.Было бы хорошо, если бы в вызове Pack был установлен флаг, который бы автоматически выполнял эти оптимизации.
При восстановлении std :: vector во время десериализации, как можно построить изflatbuffer :: Vector?Я знаю, что есть итераторы, но std :: vectorbegin (), fbVec-> end ()) не работает, потому что строковый тип - это строка flatbuffer, и, похоже, нет способа легко с использованием c_str ()вариант, если я вручную не перебираю строки.
Спасибо!