Я пытаюсь создать массив структур, где одна запись создается для каждого устройства, которое объединяется в сети с тем, на котором запущена программа. К этому массиву должен быть подключен сетевой адрес интересующего устройства.Чисто доступ к массиву структур на основе значения
Пример: в сети есть три других устройства с адресами 0x1, 0x2 и 0x3 (мы работаем на 0x0). Теперь мы хотим получить доступ к структуре данных, связанной с устройством 0x1, и предположим, что это таблица [0]. Проблема состоит в том, чтобы связать адрес (0x1
) с индексом (0
).
ПРИМЕЧАНИЕ. Сетевые адреса динамически назначаются другими частями программного обеспечения и являются не под моим контролем. Они также не гарантированно будут последовательными.
Каков самый чистый способ сделать это?
Самый интуитивный способ для меня, чтобы найти всю таблицу сравнения Address
поле каждой записи с конкретным адресом (в данном примере 0x1
), а затем возвращая индекс, но мне было интересно, если есть более подходящее способ сделать эту общую операцию. Что, кстати, вероятно, имеет собственное имя (динамическая структура данных?).
Спасибо! Обратите внимание, что адреса назначаются где-то еще и не поддаются контролю. Поэтому я не могу ожидать, что они будут последовательными, поэтому я предполагаю, что мне нужно реализовать 2 или 3. Я отредактировал вопрос с (важным) дополнением. – clabacchio
@clabacchio Я бы сказал, 2), скорее всего, и подходит для встроенных систем, поскольку он на 100% детерминирован. Хэш-таблицы часто полагаются на динамическое распределение памяти и, вероятно, переполняются в вашем случае. – Lundin
Я пришел к такому же выводу, мне не нужна сложная адресация, так как записей так мало. Большое спасибо за тщательный ответ. – clabacchio