Построение пулов данных для компонентов - PullRequest
0 голосов
/ 18 августа 2011

Я использую Windows 7 с Core Duo.Я уже давно пользуюсь Codeblocks, и я думаю, что я использовал компилятор GNU.

У меня есть (или будет) много классов компонентов, которые наследуются от абстрактного класса Component.Мне нужна помощь в создании системы для размещения пулов памяти для неопределенного количества типов компонентов, каждый из которых содержит неопределенное количество компонентов.Может быть, ради аргумента последнее исправлено, я могу выяснить, как изменить размер, когда это абсолютно необходимо.

Кроме того, удобно, чтобы каждый тип компонента имел идентификатор (unsigned short) от 0 до любого без дырок.Ура!

Итак, при условии, что у меня есть некоторые управляющие классы для отслеживания размеров массивов и прочего, будет ли что-то вроде этой работы?

class Component {};

class FooComponent: public Component {};
class BarComponent: public Component {};
.
.
.

std::vector<Component*> pool_list;

// returns pointer to beginning of pool
Component* foo_pool = MethodToCreateComponentPool(/* Params */)
Component* bar_pool = MethodToCreateComponentPool(/* Params */)

pool_list.push_back(foo_pool);
pool_list.push_back(bar_pool);

Может быть, вместо sizeof(FooComponent) в качестве Params.

Затем (где я действительно начинаю не знать, что делать) внутри функции выполните malloc( START_COUNT * component_size)

У меня нет опыта распределения памяти, подобной этой.Я могу легко настроить что-то вроде

vector< vector<Component*>* > или
map<unsigned short, vector<Component*> >

, но это (безобразно для одного) не дает мне смежных пулов.Мне нужен кеш дружественный:)

Идеи?Узоры?Идиомы?Помощь

1 Ответ

0 голосов
/ 20 августа 2011

Я увлекся тем, как я это реализовывал, и потерял след того, что мне действительно нужно. Который в основном этот пост .

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...