Здравствуйте, serge.bn, Вы писали:
SB>Как наити вершину с заданным свойством?
Собственно ответы здесь на этот вопрос я уже видел. Но, вдруг, у кого появятся новые мысли по этому поводу.
Думается мне, что это должно быть очень просто. Если контейнер вершин — список, то к нему можно применить стандартный алгоритм поиска из STL. Как бы это сделать?
Свойство грани property < edge_weight_t, float > содержит длину грани или расстояние между вершинами, кому как удобнее. Следовательно надо передать в distance_heuristic соответствующее ребро и достать из него расстояние.
Я пишу следующее:
Здравствуйте, serge.bn, Вы писали:
SB>Молчание — золото. Но я не за ним сюда пришел. SB>Или я не корректно задал вопрос? SB>Или здесь нет специалистов разбирающихся в библиотеке boost::graph?
скорее второе
я вот много на бусте программирую, но с графами до сих пор дела не имел.
You will always get what you always got
If you always do what you always did
Re[4]: Использование Boost::Graph
От:
Аноним
Дата:
14.04.09 10:21
Оценка:
Здравствуйте, jazzer, Вы писали:
J>я вот много на бусте программирую, но с графами до сих пор дела не имел.
А подскажи, плз, как читать эти бесконечные сообщения об ошибках. Существует ли какой инструмент, что бы сделать их как-то более осмысленными?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, jazzer, Вы писали:
J>>я вот много на бусте программирую, но с графами до сих пор дела не имел. А>А подскажи, плз, как читать эти бесконечные сообщения об ошибках. Существует ли какой инструмент, что бы сделать их как-то более осмысленными?
у меня есть собственный перловый скрипт.
Он заточен под сообщения gcc (всё в одной строке, в отличие от мелкософта).
В первую очередь, он убирает все сообщения с "instantiated from" — они служат только для показа цепочки инстанцирования и обычно не нужны, потому что ошибка, скорее всего, на одном из концов цепочки.
Далее, он убирает всякие повторения типа mpl::void_, и заменяет на многоточие все, что внутри классов из detail — обычно это тоже не нужно.
Ну и обычные вещи типа изничтожения пространств имен, как своих, так и бустовских, чтоб не рябило в глазах.
Используется пакет Regexp::Common для поиска парных скобок.
Здравствуйте, serge.bn, Вы писали:
SB>Молчание — золото. Но я не за ним сюда пришел. SB>Или я не корректно задал вопрос? SB>Или здесь нет специалистов разбирающихся в библиотеке boost::graph?
Если проблема еще не решена, гугли дискуссию с заголовком: "Help needed with BGL & multi_index_container" в конференции буста.
Насколько я помню, последний пример кода можно найти по тут:
т.е. использовать вектор для хранения вершин.
Я встречался с тем, что для вершин нужны итераторы прямого доступа
зачем -то, хотя это (вроде бы) нигде не описано.
Здравствуйте, MasterZiv, Вы писали:
MZ>typedef boost::adjacency_list < MZ> listS, //list vertex MZ> vecS, // vector of edges MZ> directedS, MZ> property < vertex_name_t, int, MZ> property < vertex_index_t, string > >, MZ> property < edge_weight_t, float > MZ> graph_t;
MZ>т.е. использовать вектор для хранения вершин. MZ>Я встречался с тем, что для вершин нужны итераторы прямого доступа MZ>зачем -то, хотя это (вроде бы) нигде не описано.
Спасибо. Я так и сделал. Все заработало. Просто обратил внимание, что в аналогичных примерах именно так. Хотя, действительно, нигде не написано, что именно так и надо. Во всяком случае я этого не нашел. А алгоритмы очень мощные и их применение избавило от многих "велосипедов".
По ходу есть еще вопрос.
Пусть задана структура
struct A {
int x;
int y;
};
и задан список
list<A*> list_A;
Требуется сортировать этот список. И вопрос — Как правильно написать функтор для алгоритма sort? для данного случая.
serge.bn wrote:
> и задан список > > list<A*> list_A; > > > Требуется сортировать этот список. И вопрос — Как правильно написать > функтор для алгоритма sort? для данного случая.