我有一个名为“test.dot”的文件,类似
graph {
0;
1;
0 -- 1;
}
//EOF
我想使用 boost 图形库读取文件。
#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);
}
关于c++ - 读取 graphviz 的点文件而不在 boost 图中存储节点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637760/