Re[3]: Уменьшить объем сериализации
От: k732  
Дата: 20.06.08 07:05
Оценка:
Здравствуйте, agolubtsov, Вы писали:

A>Здравствуйте, Vinick, Вы писали:


V>>Здравствуйте, k732, Вы писали:

K>>>Сам дек целиком нужен лишь с одной стороны. Если его передать, сереализовав данные, то на другой нужно лишь усредненное.
K>>>Можно ли как сделать, чтоб при сериализации бралось лишь усредненное значение, а при десериализации оно и использовалось для инициализации дека ?

V>>А если разделить чтение и запись как здесь

V>>Splitting serialize into save/load

A>И не забываем про второй параметр метода serialize

A>пускай если version = 1, то сериализуем среднее иначе весь объект

ну впринципе идея понятна. Только
1. Как сериализатору указать версию (желательно, чтоб полностью сериализовалось по умолчанию)
2. Я так понимаю, что нужно что-то вроде

    template<class Archive>
    void save (Archive& archive, const unsigned int version) const
    {
        archive & m_time;
        archive & (!version) ? m_values : m_values.avg();
    }
    template<class Archive>
    void load (Archive& archive, const unsigned int version)
    {
        archive & m_time;
        archive & (!version) ? m_values : ... ?;
    }


тоесть для сериализации понятно: если version = 0, то сериализуем весь объект, иначе только среднее значение (int)
А вот при десереализации если 0, то опять весь контейнер, а вот если не 0, то нужно как-то проинициализировать объект руками.

Вот здесь я просто не понял как
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.