
On Wed, 28 Oct 2009, Sandeep Gupta wrote:
On Wed, Oct 28, 2009 at 6:12 PM, James Thunes
wrote: Perhaps an easy answer, but I am working on adding a boost graph to an existing code. I would like to create the graph in a function (not main) and then read/modify it in a separate function. I am unsure as to what I need to pass between the functions to allow this to work. In other words, I am able to correctly create the graph in a function and modify as necessary. This function will be called many times as the code runs and it is inefficient to recreate the graph every time. I want to create the graph once when the code is run and pass the created graph to the function.
Due to the structure of the code (mostly Fortran), I can not define the graph in the main function of the code.
My graph is defined as: adjacency_list
Graph; Thank you for any help you can give, James
Try shared_ptr. Something like.
function(){ typedef adjacency_list
Graph; shared_ptr< Graph > gptr( new Graph(n) ); return gptr; }
You could also just declare the graph in whichever scope will end up storing it and then pass it by reference to the construction function: void function(Graph& g) { // build g, or build a temporary and assign it to g } Graph the_graph; function(the_graph); Where are you going to be putting the final graph? Will it be in a variable in your main(), even if it is not constructed there? -- Jeremiah Willcock