[Lemon-user] is there a way to write a subgraph?
John Lagerquist
john at rallytronics.com
Fri Dec 30 21:53:05 CET 2016
My graphs are quite small, 10 nodes on average.
On Fri, Dec 30, 2016 at 1:47 PM, Kovács Péter <kpeter at inf.elte.hu> wrote:
> Hi All,
>
> Thanks for the corrections. I'm terribly sorry for the stupid mistake. So
> I suggest passing references, but of course, not for local variables. :)
>
> Péter
>
>
>
> FilterNodes<ListDigraph>& get_subgraph(void)
>> {
>> FilterNodes<ListDigraph> subgraph;
>> ...
>> return g;
>> }
>>
>> This is a bad idea as it creates a reference to a temporary variable. I
>> think the real problem is that the FilterNodes is initiated with a local
>> map, which is destroyed when the execution leaves the function scope.
>>
>> Balazs
>>
>> On Fri, Dec 30, 2016 at 9:17 PM, Kovács Péter <kpeter at inf.elte.hu
>> <mailto:kpeter at inf.elte.hu>> wrote:
>>
>> Hi John,
>>
>> You should avoid passing graphs (and other large data structures) as
>> values between functions. Use references or pointers instead. For
>> example:
>>
>> FilterNodes<ListDigraph>& get_subgraph(void)
>> {
>> FilterNodes<ListDigraph> subgraph;
>> ...
>> return g;
>> }
>>
>> Note the '&' sign in the return type of the function. (If its
>> meaning is not clear, read some C++ tutorials about references and
>> pointers.)
>>
>> Regards,
>> Péter
>>
>>
>>
>> Péter,
>>
>> It turns out that the issue I am having is related to trying to
>> return
>> a FilterNodes<ListDigraph> issue from a function. If
>> the FilterNodes<ListDigraph> object is local I can iterate
>> through the
>> nodes as expected. If the object is returned from a function i.e.
>>
>> FilterNodes<ListDigraph> get_subgraph(void)
>> {
>> }
>>
>> void another_function()
>> {
>> auto x = get_subgraph();
>>
>> for (FilterNodes<ListDigraph>::NodeIt n(x); n != INVALID;
>> ++n)
>> ...
>> }
>>
>> I get an exception when trying to iterate through the nodes.
>>
>> John
>>
>>
>>
>>
>> On Thu, Dec 29, 2016 at 5:28 PM, Kovács Péter
>> <kpeter at inf.elte.hu <mailto:kpeter at inf.elte.hu>
>> <mailto:kpeter at inf.elte.hu <mailto:kpeter at inf.elte.hu>>> wrote:
>>
>> Hi John,
>>
>> What kind of write method are you looking for? Could you
>> send a code
>> snippet that works for the graph, but does not apply to the
>> subgraph?
>>
>> Regards,
>> Péter
>>
>>
>> I have a subgraph as follows:
>>
>> FilterNodes<ListDigraph> sub(*graph, filter);
>>
>> There doesn't appear to be a write method for the
>> subgraph as
>> there is
>> for the graph.
>>
>> Suggestions?
>>
>>
>> --
>> John Lagerquist
>> Chief Engineer
>> RallyTronics LLC
>> 801-866-5981
>>
>>
>>
>>
>> _______________________________________________
>> Lemon-user mailing list
>> Lemon-user at lemon.cs.elte.hu
>> <mailto:Lemon-user at lemon.cs.elte.hu>
>> <mailto:Lemon-user at lemon.cs.elte.hu
>> <mailto:Lemon-user at lemon.cs.elte.hu>>
>> http://lemon.cs.elte.hu/mailman/listinfo/lemon-user
>> <http://lemon.cs.elte.hu/mailman/listinfo/lemon-user>
>> <http://lemon.cs.elte.hu/mailman/listinfo/lemon-user
>> <http://lemon.cs.elte.hu/mailman/listinfo/lemon-user>>
>>
>>
>>
>>
>>
>> --
>> John Lagerquist
>> Chief Engineer
>> RallyTronics LLC
>> 801-866-5981
>>
>>
>>
>> _______________________________________________
>> Lemon-user mailing list
>> Lemon-user at lemon.cs.elte.hu <mailto:Lemon-user at lemon.cs.elte.hu>
>> http://lemon.cs.elte.hu/mailman/listinfo/lemon-user
>> <http://lemon.cs.elte.hu/mailman/listinfo/lemon-user>
>>
>>
>>
>
--
John Lagerquist
Chief Engineer
RallyTronics LLC
801-866-5981
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lemon.cs.elte.hu/pipermail/lemon-user/attachments/20161230/719f7831/attachment-0001.html>
More information about the Lemon-user
mailing list