У меня есть файл с именем «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».
Есть ли способ, которым я могу их идентифицировать, чтобы сохранить память ?? Я не хочу вводить дополнительную собственность.
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);
}
Других решений пока нет …