чтение точечного файла для graphviz без сохранения идентификатора узла в буст-графе

У меня есть файл с именем «test.dot» что-то вроде,

graph {
0;
1;
0 -- 1;
}
//EOF

Я хочу прочитать файл, используя библиотеку графов повышения.

#include <boost/graph/graphviz.hpp>

using namespace std;
using namespace boost;

int main(int,char*[])
{
typedef adjacency_list< vecS, vecS, undirectedS, property<vertex_color_t,int> > Graph;
Graph g(0);

dynamic_properties dp;
auto index = get(vertex_color, g);
dp.property("node_id", index);

ifstream fin("test.dot");
read_graphviz(fin, g, dp);
}

Однако в этом исходном коде мне пришлось прикрепить другое свойство (vertex_color_t) для хранения «node_id».
В моем простом примере это то же самое, что и «node_index».

Есть ли способ, которым я могу их идентифицировать, чтобы сохранить память ?? Я не хочу вводить дополнительную собственность.

2

Решение

dynamic_properties имеет конструктор, который принимает функтор для обработки случая по умолчанию, одна реализация boost::ignore_other_properties, Это работает:

#include <boost/graph/graphviz.hpp>

using namespace std;
using namespace boost;

int main(int,char*[])
{
typedef adjacency_list< vecS, vecS, undirectedS > Graph;
Graph g(0);

dynamic_properties dp(ignore_other_properties);
ifstream fin("test.dot");
read_graphviz(fin, g, dp);
}
1

Другие решения

Других решений пока нет …