아마도 바보 같은 질문이지만 온라인에서 답변을 찾을 수 없습니다. 내 응용 프로그램은 사용자 정의 파일에서 토폴로지를 읽고 부스트 :: 그래프를 작성합니다. 더 표준적인 그래프 표현으로 옮겨 가고 있습니다. vertex_descriptor를 키로 사용하여 노드 속성을 읽고 쓸 수 있으며 마찬가지로 가장자리 특성에 edge_descriptor를 사용할 수 있지만 그래프 특성은 무엇입니까? graphml 파일에서 어떤 키 유형을 읽을 때 연관 될 것입니까?boost :: read_graphml로 그래프 영역 속성을 읽는 방법?
struct NetworkNode {
int ponCustomers;
int asid;
}; //bundled property map for nodes
struct NetworkEdge {
int length;
Capacity maxCapacity;
Capacity spareCapacity;
std::set<Flow*> activeFlows;
Capacity peakCapacity;
}; //bundled property map for edges
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS,
NetworkNode, NetworkEdge> DGraph;
typedef DGraph::vertex_descriptor Vertex;
[...]
DGraph topology;
boost::dynamic_properties dp;
dp.property("asid", boost::get(&NetworkNode::asid, topology));
dp.property("ponCustomers", boost::get(&NetworkNode::ponCustomers, topology));
dp.property("length", boost::get(&NetworkEdge::length, topology));
dp.property("maxCapacity", boost::get(&NetworkEdge::maxCapacity, topology));
dp.property("spareCapacity", boost::get(&NetworkEdge::spareCapacity, topology));
dp.property("peakCapacity", boost::get(&NetworkEdge::peakCapacity, topology));
std::map<Vertex, int> avgUsersMap;
boost::associative_property_map<std::map<Vertex, int> >
avgUsersPMap(avgUsersMap);
dp.property("avgUsers", avgUsersPMap);
[...]
try {
boost::read_graphml(stream, this->topology, dp);
} catch [...]
공지 사항 I 그래프의 정의에 대한 유용한 속성을 저장하는 새로운 연관지도를 만들 방법 :
내 의심을 설명하기 위해, 여기에 내가 그래프를 정의하고 graphml 파일을 읽을 수있는 코드는 (예 : 빌드 할 때) 전체 그래프 수명 동안 모든 단일 노드/에지에 저장할 가치가 없습니다. 이제 이러한 속성 중 일부는 전체 그래프와 관련됩니다. 예를 들어 나는
<key id="name" for="graph" attr.name="graphName" attr.type="string" />
어떻게 필요한 property_map를 정의하고 정보의 비트가 올바르게 구문 분석하여 조치 할 수 있도록 DP에 추가 할 같은 graphml 파일 뭔가를 정의 할 수있다?