Я работаю над этим проектом, где мне нужно прочитать много данных из .dat-файлов и использовать данные для выполнения имитаций. Данные в моем .dat файл выглядит следующим образом:Элегантный способ анализа файлов данных для моделирования
DeviceID InteractingDeviceID InteractionStartTime InteractionEndTime
1 2 1101 1105
1,2 1101 и 1105 табуляцией и это означает, что устройство 1 взаимодействует с устройством 2 на 1101 мс и закончил взаимодействие на 1105ms.
У меня есть набор данных трассировки, которые собирают тысячи таких взаимодействий, и моя задача - проанализировать эти взаимодействия.
Первый шаг - проанализировать файл. Язык выбора - C++. Подход, о котором я думал, - это прочитать файл, так как каждая прочитанная строка создаст объект устройства. Этот объект устройства будет содержать свойство DeviceId и массив/вектор structs, который будет содержать список всех устройств, с которыми взаимодействовал данный DeviceId в течение моделирования. Структура будет содержать идентификатор взаимодействующего устройства, время начала взаимодействия и время окончания взаимодействия.
У меня есть два раза вопрос здесь:
мой подход правильный?
Если я нахожусь на правильном пути, как быстро анализировать эти файлы с разделителями табуляции и создавать объекты устройства без чрезмерной избыточной памяти с использованием C++?
Толчок в правильном направлении будет очень ценным.
Благодаря
Выполняя это, вы получаете два (или больше для n-сторонних взаимодействий) копий каждого взаимодействия. Если вы поддерживаете отдельный список взаимодействий и используете «вектор <взаимодействие *>» (или используйте более умный указатель), вы получаете одинаковое поведение без дублирования данных. В противном случае, хорошо. – dmckee
Если индекс устройства может появиться в столбце «DeviceID» или в столбце «InteractingDeviceID», тогда вы правы. Отбрасывание 'взаимодействия.other_device_id', имеющего глобальный вектор« взаимодействия »и наличие каждого хранилища' device', будет указывать только на «взаимодействие».Когда я писал это, я предполагал, что список устройств и список взаимодействующих устройств различны (как если бы эти данные отслеживали устройства «инициатор» и список «целевых» устройств, на которые они отправляли команды). – bta
Большое спасибо. Это объясняет это. –