Dear Jeremiah Willcock,
Thanks for your explanations.
I think I am starting to walk out of the chaos...
For the adjacency_list, there isn't an edge_index property.
That means the edge_index property is not used by the
graph internally, but could be used by user just like the edge_weight or edge_name, and these property should be assgined by user manually.
So in the examples "exterior_properties.cpp", I could replace all the strings "edge_index" with "edge_weight", and doing this will not affect the result.
The property map works in this case beacuse the edge_index property is type of int, and the value of the edge_index property
is the offset to the beginning of the underlying property containers (int capacity[] and int flow[]).
And the whole mapping process when calling the "boost::get(capacity, *out)" includes two mappings:
Frist mapping: KEY=*out (edge descriptor)-->VALUE = offset value (int)
Second mapping: KEY=offset value (int) --> VALUE= the corresponding property value
Am I right?
Thanks.
Zhiyu LI
"exterior_properties.cpp":
typedef boost::adjacency_list