2011-12-16 3 views
0

У меня есть список объектов для создания, но некоторые из них зависят от другого. Каждый объект содержит список «идентификаторов» (строка в моем случае) объекта, от которого он зависит.Решить зависимость между объектами в C++

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

Таким образом, с помощью следующего кода, я хотел бы получить этот список из объектов:

typedef std::string Id; 
typedef std::set <ID> Ids; 

struct ObjectInformation 
{ 
    Id const& getId(); 
    Ids const& getDependencies(); 
}; 
std::vector <ObjectInformation> objects; 

Я знаю BGL (библиотека ускорителей может это сделать, но кажется слишком сложной

+0

Вам нужно будет предположить, что нет круговых зависимостей; в противном случае то, что вы хотите сделать, невозможно. (То есть, если есть округлость, что-то в круге должно быть создано раньше или одновременно с чем-то, от чего оно зависит.) –

ответ

3

Это пример для topological sort. Проще всего использовать существующую топологическую сортировку, поэтому я не уверен, почему вы дисквалифицируете повышение. при этом piece of documentation, который дает пример.

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

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