Здравствуйте, я хочу сохранить двоичный объект std::vector<std::vector<int> >
MATRIX в файле.
out.write((char*)&MATRIX, sizeof(MATRIX));
Проблема в том, что фиксируется только размер столбца. Изменится размер строки. Если я читаю объект из бинарного файла, то недостаточно знать только размер, не так ли? Итак, инициализация, например. вторая матрица с
std::vector<std::vector<int> > MATRIX2;
for ( int i=0;i<column_dim;i++ ) MATRIX2.push_back ( vector<int> ( 0 ) );
ifstream in(cstr, ios::in | ios::binary);
и чтение данных объекта с помощью
ifstream in(cstr, ios::in | ios::binary);
in.read((char*)& MATRIX2, fSize);
не имеет смысла, потому что компилятор понятия не имеет о структуре сохраняемых данных. Мой вопрос: есть ли лучший способ решить эту проблему, чем сохранить матричную структуру (всю информацию о размерах строк) во втором файле, прочитать ее и создать MATRIX2 с соответствующей структурой, которая затем заполняется с помощью
ifstream in(cstr, ios::in | ios::binary);
in.read((char*)&nn_H_test, fSize);
?
std::vector
файла? Это никогда не сработает, и, читая его обратно, вы получите объект в полностью запутанном состоянии (единственным правильным может быть размер вектора, но внутренний указатель на элементы будет недействительным) . Вам нужна правильная сериализация. - person Matteo Italia   schedule 27.05.2011