Постановка задачи
В стандартной библиотеке классов существуют так называемые коллекции. Коллекция -это массив указателей на объекты в общем случае произвольного типа. Размерность коллекции растет по мере ее заполнения. Образно говоря, коллекция объединяет в себе множество ничем не связанных между собой объектов, кроме разве факта объединения. Если объекты в коллекции однотипны, то возможно ее упорядочение. Попробуем реализовать ту же самую идею, но уже в файле. Тогда мы получим файловую коллекцию со следующими свойствами:
-в коллекцию входят элементы произвольного, но одного типа. В начале каждого файла имеется идентификатор типа объектов, которые в нем хранятся;
-в коллекции существует естественный порядок расположения элементов по их номеру (индексу, как в обычном массиве);
-размерность коллекции не ограничена и растет по мере ее заполнения;
-элементы коллекции размещаются в файле и загружаются в память только при обращении к ним;
-коллекция может быть отсортирована, после чего в ней возможен ускоренный (двоичный) поиск.
В принципе, возможно создание файловой коллекции, содержащей в одном файле элементы различных типов. Но возникающие при этом технические проблемы (моделирование виртуального конструктора при загрузке объектов) выходит за рамки этой книги.