![]() |
|
Модераторы: bsa |
![]()
|
|
| dengalf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 10.4.2009 Репутация: нет Всего: нет |
Доброго времени суток.
С++ занимаюсь недавно и исключительно по мере необходимости. Не программист короче. Вопрос сформулирую так: Программа создает структуру struct syst { int razm; int dp0; vector <bool> resh_syst; vector < vector < vector <int> > > left_syst; vector <bool> right_syst; vector < vector <bool> > p0; vector <int> vp0; vector < vector <bool> > p1; vector <int> vp1; vector <bool> otvet; }; с кучей значений. и плюс vector < vector <bool> > morg очень большой длины(2 в 500 положим степени). Остальные vector ы также не маленькие. При этом, к текстовому файлу могут одновременно обращаться 10-30 компов. Как, с каким синтаксисом, удобнее организовать вывод в файл и как его впоследствии считать. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
считывать как я понял вы потом опять в структуру будете? т.е. вам нужно временное хранилище внутреннего состояние структуры? если да - то в PHP есть сериализация. возможно в С++ есть аналогичные библиотеки. |
|||
|
||||
| dengalf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 10.4.2009 Репутация: нет Всего: нет |
примерно так.
Если быть точнее - первые 5 строк структуры будут загоняться только один раз(кстати пришла мысль разделить структуру на две части). А вот все остальное - постоянно изменяется. новый вариант на три файла: первый для struct syst { int razm; int dp0; vector <bool> resh_syst; vector < vector < vector <int> > > left_syst; vector <bool> right_syst; } второй struct pop{ vector < vector <bool> > p0; vector <int> vp0; vector < vector <bool> > p1; vector <int> vp1; } третий < vector <bool> > morg вот так наверное будет лучше Это сообщение отредактировал(а) dengalf - 10.4.2009, 11:22 |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
dengalf, если бы у вас была структура без классов (без vector), то её можно было тупо записывать в бинарный файл примерно так:
а читать так:
Но вектор вы зачем-то используете, значит массивы динамические. и записывать структуру за "один присест" не получится уже. Можно внутрь файла записывать информацию, в которой будет указан размер вектора. Т.е. чтобы программа знала начиная откуда ей считывать данные. *** Есть ещё паттерн проектирования Memento (Хранитель) Он позволяет, не нарушая инкапсуляции, получить и сохранить во внешней памяти внутреннее состояние объекта, чтобы позже объект можно было восстановить точно в таком же состоянии. Это сообщение отредактировал(а) zim22 - 10.4.2009, 11:26 |
||||
|
|||||
| dengalf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 10.4.2009 Репутация: нет Всего: нет |
Вектор нужен.
собственно int razm; int dp0; и говорит о размерности первый - о размерности внутренних булевых векторов, второй - о размерности p0, p1, vp1 b vp0 (пока приемлемо, что они задаются один раз. Но это пока). morg - однозначно в динамике. а вот первая структура вкидывается один раз. В принце, главное сейчас реализовать именно ее. |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
давайте для начала пример попроще рассмотрим. запишем в файл и потом считаем первое поле(размер)
****** Пример № 2 Запишем и потом прочитаем не только размер, но и вектор!
Это сообщение отредактировал(а) zim22 - 10.4.2009, 11:56 |
||||
|
|||||
| dengalf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 10.4.2009 Репутация: нет Всего: нет |
Ну вот, это уже поближе к народу. А то я после "паттерн проектирования " уже испарятся отсюда хотел
А чуток откоментить, если не сложно. Я откровенно говоря это малость не так себе рисовал. Собственно перед реализуемой прогой стоит след. цель: Есть задача, есть алгоритм решения. Необходимо оценить его качество при куче разных параметров. Алгоритм работает, дело стоит за статистикой. А чтоб ее собрать, необходимо сформировать довольно специфические условия(что требует много времени и ресурсов Это сообщение отредактировал(а) dengalf - 10.4.2009, 12:21 |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Сколько сколько ? 2 ** 500 битов (пусть будет максимально плотно), это 2 ** 497 байтов, что составляет ( 2 ** 40) ** 457 или (1Тб) ** 457. Я затрудняюсь сказать, сколько это будет в винчестерах по 1Тб (2 ** 457 штук или около 10 ** 137), что составляет более 10 ** 100 объемов Земли (что то мне кажется, что даже в Галактику не поместится)
|
||||||
|
|||||||
| dengalf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 10.4.2009 Репутация: нет Всего: нет |
Да, видать малость перегнул. Я тут переосмыслил. Ладно, размер векторов пусть будет, положим тысяч 10-20, про доступ с других машин пока тоже забудем. Оставим только ввод-выводъ struct syst { int razm; int dp0; vector <bool> resh_syst; vector < vector < vector <int> > > left_syst; vector <bool> right_syst; } Собственно техническая работа в самом начале, до конечного результата есть разбег в год-два, а вот на промежуточный итог крайне скорость требуется... Приношу глубочайшие за сырой вопрос. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
если у вас вопросов больше нет - пометьте тему решённой. |
|||
|
||||
| dengalf |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 10.4.2009 Репутация: нет Всего: нет |
Нет, вопрос таки остался - как всеж организовать ввод-вывод вот такой структуры:
struct syst { int razm; int dp0; vector <bool> resh_syst; vector < vector < vector <int> > > left_syst; vector <bool> right_syst; } Мне больше ничего пока не надо. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Я вам привёл пример. Для вашей структуры всё будет выглядеть почти аналогично. Если вы хотите готовый код - вам в Центр Помощи. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |