2012-01-25 11 views
1

Каков наилучший подход для хранения графика с неизвестным порядком узлов в векторе. Например, у меня есть узел, входящий в неизвестный порядок, например, 35,23,89,200,12,89,569 и т. Д. ... Я хочу хранить их таким образом, чтобы память не была потрачена впустую, и узлы получили доступ эффективно, если в постоянное время это будет замечательно. Может быть, некоторые хеш-функции будут работать, но если есть один, который может различать узлы, скажите мне, или если для этого есть какой-то другой подход.хранение графика с неизвестными узлами порядка

Благодаря

+0

Что означают цифры? узлы содержат только целые числа? – WeaselFox

+0

это узел узлов узлов № 35, узел # 200, такой как –

ответ

1

решение Простейшее Я думаю, это просто вставить их в свой вектор в порядке, и создать map<int,int> на карту от их значений их показателей.

В вашем примере:

map[35] == 0 
ma[[23] == 1 
map[89] == 2 
map[200] == 3 
map[12] == 4 
... 

теперь доступ к узлу i в vector[map[i]]

EDIT:
Вторая возможность будет использовать set вместо vector держать элементы, но это может не всегда быть желательным. [set не имеет дубликатов и не будет содержать элементов в том порядке, в котором вы их вставили], но подумайте, подходит ли оно вам.

+0

, почему бы не использовать карту из индекса непосредственно в класс/структуру узла? также карта внутренне реализована как двоичное дерево, вероятно, вам лучше использовать хэш-карту, например, в boost. – WeaselFox

 Смежные вопросы

  • Нет связанных вопросов^_^