Сериализация только части std :: vector с сериализацией Boost - PullRequest
1 голос
/ 30 января 2020

У меня есть большое std::vector<X>, где X - это структура с функцией serialize для Boost.

Я хотел бы сериализовать только часть (непрерывный сегмент) этого вектора таким образом, чтобы десериализация результата дала бы мне std::vector<X> только с элементами, которые я сериализовал.

Я могу предоставить итераторы, указывающие на начало и конец сегмента, который я хочу сериализовать, или я могу предоставить индексы начала и конца. Есть ли способ сделать это без создания меньшего вектора и копирования в него нужных элементов?

Обратите внимание, что я использую binary archives, поэтому любое решение, которое будет работать только для этого типа архива, подойдет.

1 Ответ

0 голосов
/ 30 января 2020

Использование std :: valarray (https://en.cppreference.com/w/cpp/numeric/valarray) - это путь к go здесь. По совпадению, сериализация boost также поддерживает valarray, так что вы хороши до go. Вот сравнение между std :: vector и std :: valarray для ясности: C ++ valarray и vector

...