这个问题是关于Boost Graph Library
的。
假设我的图形类型定义如下:
using Graph = boost::adjacency_list<vecS, setS, directedS, State>;
现在,如果我理解正确的话,可以将新的
State
对象s
添加到图形中,如下所示:auto vd = add_vertex(g); // g is a Graph object
g[vd] = s;
这种方式有两个问题:
State
具有默认构造函数。对于这种特殊的类State
,默认的构造函数根本没有意义。 State
对象的默认构造付费。此成本是纯运行时开销。 因此,有没有一种方法可以避免对 bundle 对象使用默认构造函数?
最佳答案
documentation:
您应该使属性类型能够保存或引用State
。
对于第一步,您可能会成功实现带有属性的重载:
auto vd = add_vertex(s, g); // g is a MutablePropertyGraph object
g[vd] = s;
查看其他docs