Добрый день!
Есть задачка из области двоичных функций, точнее расчет некоторых характеристик.
В массив длинны, скажем 7, заносятся числовые значения. Далее у этого массива есть своя характеристика (сколько раз он встречается в веторе).
Здесь первый вопрос — лучше сделать структуру в которой будет массив и это значение или сделать массив длины 8 и в последней ячейке хранить это значение.
И вот таких массивов будет около 30к (в последствии больше и они будут длиннее).
Их я хочу запихнуть в вектор. И этот вектор нужно записывать в файл и затем (уже в другой программе) считывать.
Как это лучше реализовать?
Здравствуйте, Cheat, Вы писали:
C>Есть задачка из области двоичных функций, точнее расчет некоторых характеристик.
C>В массив длинны, скажем 7, заносятся числовые значения. Далее у этого массива есть своя характеристика (сколько раз он встречается в веторе).
C>Здесь первый вопрос — лучше сделать структуру в которой будет массив и это значение или сделать массив длины 8 и в последней ячейке хранить это значение.
C>И вот таких массивов будет около 30к (в последствии больше и они будут длиннее).
C>Их я хочу запихнуть в вектор. И этот вектор нужно записывать в файл и затем (уже в другой программе) считывать.
C>Как это лучше реализовать?
Рассмотрите такой вариант: хранить вообще все данные в единственном массиве M и в отдельном массиве IDX хранить указатели на индексы первого элемента каждого "маленького" массива.
В массиве M Вы храните только данные, а размер каждого "маленького" массива хранится рядом с индексом первого элемента в IDX. IDX может хранить как просто числа, так и структуры типа:
int[] M; // It can be, for example, float[] M;
Index[] IDX;
Struct Index{
int index; // Index of the head element
int size; // Data size
}
Тогда при сохранении в файл данные и индексы будут лежать раздельно (в одном или 2х файлах)
Такая структура подходит, если у Вас маленькие массивы не будут менять своего размера, т.е. просто храниться.
Так же плюс в том, что типы данных могут быть отличны от integer.