статически распределенные структуры данных - PullRequest
2 голосов
/ 19 октября 2010

Я работаю на существующей встроенной системе (память ограничена, Flash ограничен, ...) с операционной системой RT. Все структуры данных имеют фиксированный размер и выделяются на «время компиляции» и поэтому подходят для RT. Там нет динамической памяти распределение. Язык программирования - C ++, но STL недоступен. я хотел бы заменить некоторые из структур данных, особенно LinkedList, Vector и Карта с некоторыми более общими вариантами.

Самым близким, что я видел до сих пор, является следующая структура: http://apfw.sourceforge.net/. Самый большой недостаток ИМХО в том, что для LinkedList с размером N, конструктор по умолчанию из T вызывается N раз. лучший класс должен статически распределять sizeof (T) * N байт.

Кто-нибудь знает, что я библиотека со всеми вышеуказанными ограничениями?

Ответы [ 3 ]

1 голос
/ 19 октября 2010

Рассматривали ли вы передачу своего собственного распределителя (выделения из статического пула) в контейнеры STL?

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

1 голос
/ 19 октября 2010

Могу ли я порекомендовать вам следующее:

http://www.codeproject.com/KB/recipes/Containers.aspx

Это статья о дизайне классов контейнеров, которую я написал. Одним из самых больших их преимуществ является то, что выделяет данные и хранит их в контейнере.

Вы можете, например, объявить ваши статические данные во время компиляции, а затем во время выполнения вставить / удалить их в / из списка / дерева / и т. Д.

1 голос
/ 19 октября 2010

Если вы фиксируете размер LinkedList, почему бы просто не создать свой собственный простой класс и поддержать его массивом?

...