Форум программистов, компьютерный форум CyberForum.ru

Вопросы сериализации - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрица http://www.cyberforum.ru/cpp-beginners/thread695795.html
Сформировать из некоторой матрицы A(n,n) верхнетреугольную матрицу В(n,n) (все элементы ниже главной диагонали нулевые), нижнетреугольную матрицу С(n,n) (все элементы выше главной диагонали нулевые) и диагональную матрицу D(n,n)(все элементы нули, кроме главной диагонали).
C++ lower_bound У меня вопрос как использовать функцию STL lower_bound к простому массиву допустим int f искать на промежутке от 1 до n какое-то x так можно и как? Подскажите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread695792.html
C++ Разряженные таблицы
Люди, хелп. Плиз скиньте мне реализацию RMQ (минимум на отрезке) с использованием разряженных таблиц у кого есть. Срочно надо.
C++ Что лучше?
Что лучше из ниже перечисленного? (Visyal Studio C++ 2010 Ultimate) (Dev-C++) (или чтото другое)
C++ Все не получается сделать http://www.cyberforum.ru/cpp-beginners/thread695761.html
Осуществить сравнение первых n символов двух строк. Знаю что надо использовать функцию strncmp А вот как написать , не знаю Добавлено через 25 минут printf("%i\n",strncmp (str1, str2,n)); почему ответ дает отрицательное число -1?
C++ Ищу учителя Всем привет. Кто может, дайте плиз пару уроков по С++. Не могу нормальных уроков в инте найти. Заранее благодарен. подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
12.11.2012, 21:20     Вопросы сериализации
Croessmah, зачем? Я же наоборот говорю, о простом переводе объекта в массив байтов и речи быть не может. При сохранении объекта, лежащего в динамической памяти, надо сохранять само состояние этого объекта (рекурсивно, если в объекте тоже есть данные, выделенные динамически - сохраняем эти данные, а не указатель). Т.е. например имеем класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Foo
{
    // ...
private:
    int a;
};
 
class Moo
{
    // ...
private:
    int data1;
    double data2;
    char data3;
};
 
class Bar
{
    // ...
private:
    Foo **foo_arr;
    int foo_arr_size;
    Moo data;
};
Экземпляр класса Bar (в текстовом представлении) стоит сохранить примерно так:
Код
type : Bar
fields_start
    type : Foo[<foo_arr_size>]
    arr_start
        type : Foo
        fields_start
            type : int
            value : <a>
        fields_end
        type : Foo
        fields_start
            type : int
            value : <a>
        fields_end
        ...
        type : Foo
        fields_start
            type : int
            value : <a>
        fields_end
    arr_end
    type : Moo
    fields_start
        type : int
        value : <data1>
        type : double
        value : <data2>
        type : char
        value : <data3>
    fields_end
fields_end
Это такой упрощённый вариант для конкретного случая. Сначала идёт тип объекта. Если объект скалярного типа, следом просто идёт значение. Если нетривиальный - идёт список полей. Как видно, пара "двойной указатель-размер" в данном случае интерпретируется как массив указателей на объекты класса. Соответственно каждый элемент массива - объект класса. Он полноценно сериализуется (со списокм поле и т.д.). В простейшем случае можно было бы опустить тип каждого элемента, но когда в дело вступает наследование, там уже надо учитывать тип всегда.
Вот как-то так. Очень похоже на XML, что не удивительно, ведь XML-представление объектов - один из способов сериализации.

Добавлено через 2 минуты
НеСказочник, да, судя по всему, оно и есть.
 
Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru