Boost read_graphml example
Boost read_graphml example
我正在尝试使用BOOST库构建一个简单的GraphML加载器。我有一个GraphML文件,我想在一个boost邻接表结构中加载它。图是有向的,它存储的唯一信息是节点的名称(0,1,2,…)和从一个节点到另一个节点的边。我所做的是:
void loadHierarchy(){
// ...
std::ifstream inFile;
inFile.open("ext.gml", std::ifstream::in);
typedef boost::adjacency_list<> Graph;
Graph g;
boost::read_graphml(inFile, g);
// ...
}
我不需要使用任何属性,只需要将整个图信息保存在邻接表中。
我得到的错误如下:错误:从
‘loadHierarchy()::Graph’
类型表达式初始化‘boost::mutate_graph&’
类型引用无效/usr/include/boost/graph/graphml.hpp:194: error: in passing argument 2 of
‘void boost::read_graphml(std::istream&, boost::mutate_graph&)’
我认为你应该使用read_graphml()的3个参数版本,即使你不需要设置任何属性。您想要使用的两个参数版本是库的内部细节(不幸的是暴露了)。
所以,我建议你试试这样做:
boost::dynamic_properties dp;
boost::read_graphml(inFile, g, dp);
希望有帮助。
经过更彻底的调查后,我得出的结论是,实际上很幸运地暴露了boost::read_graphml的2参数版本。有3个参数的是这样的:
template<typename MutableGraph>
void
read_graphml(std::istream& in, MutableGraph& g, dynamic_properties& dp)
{
mutate_graph_impl<MutableGraph> mg(g,dp);
read_graphml(in, mg);
}
有一个特别好的GraphML编辑器,即yEd,它可以输出一种格式错误的GraphML文件,例如,它有像
这样的标签<key for="node" id="d6" yfiles.type="nodegraphics"/>
。上面的键应该有一个属性。在其中键入="string",但它没有。取而代之的是一个yfiles。类型,这似乎是一个扩展ed正在使用(不幸的是)。默认的mutate_graph_impl不能处理这个问题。Mutate_graph_impl需要由您继承,并且您需要直接调用2版本的read_graphml,并将您自己的Mutate_graph_impl实现传递给它。在您自己的实现中,您需要重写mutate_graph_impl的
virtual void
set_vertex_property(const std::string& name, any vertex, const std::string& value, const std::string& value_type)
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Qt focusObjectChanged example?
- 运行命令 "rosbag play example.bag" 时出错。找不到与插件 rosbag/NoEncryptor 对应的库
- QWebSocket Hello World Example
- c++ Doxygen example and description
- Example of CDocument::ReleaseFile for MFC
- 找不到 int com.example.nimashahbazi.mooshak.EncryptingActivity.
- Qt example const_cast
- TensorFlow C++ example for Android
- 运行"OpenPose C++ API Tutorial - Example 3 - Body from image"失败
- Boost:列出GraphMl中指定的顶点和边缘属性
- _Unwind_RaiseException example
- std::none_of example from cppreference.com
- Microsoft AMP for C++ with Dr Dobbs example?
- 在macOSX上编译boost_asio/example/ssl/server.cpp可以在Linux上工作
- 使用 boost 将无平行边图保存到 graphml 文件
- Example for LVM_SUBITEMHITTEST
- Example of C++ 11 std::chrono::duration
- 重写 contiki 源代码“example-mesh.c”以根据计时器值发送消息
- boost::algorithm::boyer_moore_search OO example