Реализация коммуникационного стола

Я работал над встроенным программным обеспечением. Одно из требований также
связь через CAN по проприетарному протоколу. Ядро общения
Протокол — это таблица связи, которая содержит все передаваемые переменные.
Каждая переменная имеет дополнительную информацию, например, идентификационный номер, имя,
коэффициент масштабирования и так далее.

Эта таблица связи разделена на так называемые блоки, и каждый блок состоит
из нескольких так называемых записей. Одна запись содержит информацию об одной переменной.

Ни блоки, ни записи в одном блоке не являются непрерывными
последовательность чисел. Есть «промежутки» между номерами блоков и записью
номера. Таким образом, таблица может выглядеть, например, следующим образом:

блок 13: запись 01, запись 04, запись 08;
блок 15: запись 02, запись 03;
блок 18: запись 06

Я думал о приемлемой структуре данных для внедрения такого
Таблица. Моей первой идеей был одномерный массив, содержащий
описание каждого блока данных. Это означает номер блока, количество записей в этом
блок и указатель на первую запись в блоке. Каждый блок будет реализован как
одномерный массив, содержащий отдельные записи в виде структур, содержащих
значение, имя, коэффициент масштабирования и т. д.

Программное обеспечение написано на C ++, поэтому я также думал о двухмерном
массив объектов (каждая запись будет реализована как экземпляр класса Record).

Мне очень часто приходится искать в этой таблице, поэтому я решил использовать тот факт,
что блоки и записи в одном блоке всегда сортируются по возрастанию
в соответствии с их идентификационным номером, и я собираюсь реализовать двоичный
алгоритм поиска.

Я бы очень оценил любую оценку моей идеи. Заранее спасибо за любой
предложения.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …