I've been trying to use the Boost Graph Library. For the most part I'm working it out. However, I'm finding the documentation annoyingly decentralized....it isn't interlinked enough, at the very least. Too hard to go from "how do I use X" to "oh, here's the documentation on X." Took me half an hour just to find *something* on the add_edge function (turns out it's on the Concepts page?), and what's there *barely* qualifies as a prototype, much less a proper man page.
Concepts are similar "STL Concepts" (
http://www.sgi.com/tech/stl/table_of_contents.html). They classify and describe the operations available to /all/ graph data structures (e.g., adjacency_list or matrix), which is why it might seem to barely qualify as a prototype.
My current question is regarding properties. Some of the algorithms specify the "edge_weight" property as if it's something all edges have, and the vertex_index property as if it's something all vecS-specified graphs have. Yet I can't find any documentation explicitly confirming this, and my compiler seems to disagree in any case.
http://www.boost.org/doc/libs/1_38_0/libs/graph/doc/kruskal_min_spanning_tree.html
Currently, only adjacency_list<OEL, vecS, D, VP, EP, GP, EL> has a vertex_index property by default. The OEL, D, etc. are just placeholders for any template argument.
Can something be done about the state of the documentation, and is there a comprehensive list of default properties available somewhere (together with how those are replaced or supplemented when user properties are introduced)?
I'm currently rewriting the documentation, but that won't be ready until 1.40 at the earliest.