The C++ Graph Classes: A Tutorial - Graph(C++) and Graph_alg(C++)

Creating, Inserting, Removing, and Destroying the User Graph Types

Having declared our user types, we now want to be able to easily create, insert, and remove Modules and Transport_Times from the Product. Once the user types have been created as just described, then we can statically declare the objects that are represented in Figure 1:

   Product widget;
   Module m0("A");
   Module m1("D");
   Module m2("F");
   Module m3("C");
   Module m4("J");
   Module m5("M");
   Module m6("B");
   Module m7("K");
   Module m8("Z");
   Transport_Time t0(&m0, &m1, 5);
   Transport_Time t1(&m0, &m2, 1);
   Transport_Time t2(&m1, &m3, 2);
   Transport_Time t3(&m1, &m4, 0);
   Transport_Time t4(&m5, &m4, 0);
   Transport_Time t5(&m3, &m6, 0);
   Transport_Time t6(&m4, &m7, 6);
   Transport_Time t7(&m4, &m6, 7);
   Transport_Time t8(&m7, &m8, 8);
   Transport_Time t9(&m6, &m8, 9);

Note that we have here attached variable names to the newly-created Modules and Transport_Times: if many such declarations are to be made and ultimately used, these individual names are awkward at best. We'll see in the sections, ``Vertex Constructors and Destructors'', and ``Edge Constructors and Destructors'', that there are ways to avoid this problem: however, for simplicity we will continue with these for now.

To insert and remove Modules and Transport_Times from the Product, simply

       widget.insert(&t0);    etc.    .
       widget.remove(&t0);    etc.    .

using member functions of the Graph class from which Product widget is derived. Note that insert and remove take pointer arguments, as we described in the section, ``What is a Graph?''.

The destruction of these statically declared objects happens automatically when these objects go out of scope, as with any other object type in C++. More information on Graph class object destruction can be found in the sections, ``Graph Constructors and Destructors'', ``Vertex Constructors and Destructors'', and ``Edge Constructors and Destructors''.

Next topic: Where is a Given Module Needed?
Previous topic: A Generic Version of Figure 1

© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005