Я хотел бы представить график на C++.map <A, set<A*>> vs. set <A> где A содержит набор A *
Я разбираю свои входные данные, которые являются (1) узлами и (2) соединениями между узлами.
Мой вопрос о структуре данных, чтобы удерживать узлы и соединения:
Мой первый подход был своего рода связанный список, я знал, что из C, но с использованием STL контейнеров: class A
держащие имя узла и std::set<A*>
для хранения указателей на подключенные узлы. Что-то вроде этого (не компилируется, только проект идеи):
class A
{
private:
std::string name;
std::set<A*> links;
public:
// constr., destr., getter, setter, ...
};
Моя вторая мысль была std::map<A, std::set<A*> >
или даже std::map<A, std::vector<A*> >
на мой взгляд, было бы лучше подход в данном случае.
Конечно, class A
в этом случае будет содержать только имя:
class A
{
private:
std::string name;
public:
// constr., destr., getter, setter, ...
};
Мой график заполняется один раз с данными, никакие операции удаления/вставки/обновления будут применены после инициализации.
Если есть лучшая структура данных подход, который я не упомянул, не стесняйтесь, чтобы просветить меня :)
Если вам разрешено использовать подталкивание в вашем проекте, я хотел бы дать попробовать на [BGL] (http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/ index.html) (Библиотека Boost Graph) – Massimiliano