LINUX.ORG.RU

Подскажите какую структуру данных оптимальнее использовать для моей задачи


0

1

Вообщем задача такая:
есть некий входной поток данных представляющий собой сообщения:

одно сообщение представляет собой

string id;
double value;

т.е. идентификатор сообщения и значение некоторое;

есть объект, у этого объекта есть некие свойства (например цвет1, цвет2, ширина, высота и т.д.)

к каждому свойству можно прицепить один id и нужно в зависимости от value изменять свойство
например: цвет2 <-> idMes1 и далее в зависисмоти от value меняем свойство цвет2.

Поидее напрашивается ассоциативный массив <map> типа ключе value - значение цвет, но тут некуда запихнуть id...

какие можно еще варианты придумать?


Ни фига не понял. Это не постановка задачи, а разорванный бред.

unnamed
()

Несовсем понятно, что имеется ввиду. Заведи Map: {id -> Свойство}. Приходит сообщение, достаешь id и value, берешь соответствующее id свойство из Map и меняешь его на value.

Ian ★★
()

>какие можно еще варианты придумать?

Например, написать так, чтобы тебя поняли. Поможет.

Zhbert ★★★★★
()
Ответ на: комментарий от Ian

{1 -> Цвет_1, 2 -> Цвет_2, 3 -> Цвет_3}

Message { 1, Blue }

Цвет_1 = Blue;

Ian ★★
()
Ответ на: комментарий от Zhbert

> Например, написать так, чтобы тебя поняли. Поможет.

Только вот после этого обычно сам допираешь до ответа :) Говорят же, чтобы правильно спросить, надо знать половину ответа.

const86 ★★★★★
()
Ответ на: комментарий от const86

> Говорят же, чтобы правильно спросить, надо знать половину ответа.

Чуток не так. Пока придумаешь правильный вопрос, поймешь половину ответа (т.е. заранее знать не будешь).

По вопросу ТС.

к каждому свойству можно прицепить один id и нужно в зависимости от value изменять свойство

Тебе кроме твоих структур нужно иметь отдельный индекс (в виде хеша, например)

id->property_ptr

anonymous
()
@map = {}

def receive_message(id, value)
  @map[id] = value
end

receive_message(1, { :color1 => "red", :color2 => "greed" })
JackDaniel
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.