Вектор указателей, указывая на объекты в векторе объектов. Как это сделать? - PullRequest
2 голосов
/ 02 ноября 2011

У меня проблема с C ++.

У меня есть три класса: Graph, Nodes и Edges, чтобы смоделировать простой Graph. Теперь объект класса Graph имеет вектор с объектами класса Node и вектор с объектами класса Edge.

Объект класса Node должен знать все входящие и исходящие ребра. И объект пограничного класса должен знать, от какого узла он идет и к какому узлу он идет. Теперь у меня есть следующая проблема: Все ребра в графе хранятся в векторе в классе ребер. Объекты класса узла также должны знать некоторые ребра, поэтому я дал им вектор указателя, указывающий на принадлежащие ребра в векторе графа. Но теперь моя проблема: если я удаляю ребро из вектора графика, указатели будут неправильными.

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

Есть ли решение или мне нужно копировать каждое ребро? Может ли кто-нибудь помочь мне, пожалуйста?

1 Ответ

1 голос
/ 02 ноября 2011

Я бы использовал дескрипторы или просто использовал shared_ptr для всех контейнеров.

Дескрипторы являются предпочтительным оружием в библиотеке графов ускорения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...