serialize.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 84 行

CPP
84
字号
// Copyright (C) 2006 Trustees of Indiana University//// Distributed under the Boost Software License, Version 1.0.// (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)#include <boost/config.hpp>#include <iostream>#include <fstream>#include <string>#include <boost/tuple/tuple.hpp>#include <boost/graph/adjacency_list.hpp>#include <boost/graph/visitors.hpp>#include <boost/graph/breadth_first_search.hpp>#include <map>#include <boost/graph/adj_list_serialize.hpp>#include <boost/archive/xml_iarchive.hpp>#include <boost/archive/xml_oarchive.hpp>struct vertex_properties {  std::string name;  template<class Archive>  void serialize(Archive & ar, const unsigned int version) {    ar & BOOST_SERIALIZATION_NVP(name);  }  };struct edge_properties {  std::string name;  template<class Archive>  void serialize(Archive & ar, const unsigned int version) {    ar & BOOST_SERIALIZATION_NVP(name);  }  };using namespace boost;typedef adjacency_list<vecS, vecS, undirectedS,                vertex_properties, edge_properties> Graph;typedef graph_traits<Graph>::vertex_descriptor vd_type;typedef adjacency_list<vecS, vecS, undirectedS,                vertex_properties> Graph_no_edge_property;int main(){  {    std::ofstream ofs("./kevin-bacon2.dat");    archive::xml_oarchive oa(ofs);    Graph g;		vertex_properties vp;		vp.name = "A";		vd_type A = add_vertex( vp, g );		vp.name = "B";		vd_type B = add_vertex( vp, g );		edge_properties ep;		ep.name = "a";		add_edge( A, B, ep, g);    oa << BOOST_SERIALIZATION_NVP(g);    Graph_no_edge_property g_n;    oa << BOOST_SERIALIZATION_NVP(g_n);  }  {    std::ifstream ifs("./kevin-bacon2.dat");    archive::xml_iarchive ia(ifs);    Graph g;    ia >> BOOST_SERIALIZATION_NVP(g);		if  (!( g[*(vertices( g ).first)].name == "A" )) return -1;    Graph_no_edge_property g_n;    ia >> BOOST_SERIALIZATION_NVP(g_n);  }  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?