## 10. TUTORIAL 004 : Create your first subgraph.

This tutorial will teach you how to create subgraphs. At the end of it, we will have a hierarchy of 3 graphs.

Before anything consider the following function that creates 3 nodes and 3 edges (same as in tutorial 001 ):

void buildGraph(Graph *graph)
{
}

The creation of a subgraph is quite simple. You just have to use the function Graph* addSubGraph (BooleanProperty* selection = 0) . It will create and return a new SubGraph of the graph. The elements of the new subgraph are those selected in the selection(selection associated value equals true); if there is no selection an empty subgraph is returned.

In the following sample we create 3 empty subgraphs :

//build three empty subgraphs

We now need to create some nodes and edges :

buildGraph(subgraph0);
buildGraph(subgraph1);
buildGraph(subgraph2);

Following is the hierarchy we have just created, displayed with tulip :

We can check that by iterating on our graph's subgraphs using the function Iterator< Graph * >* Graph::getSubGraphs() :

//iterate subgraph (0 and 1 normally ) and output them
Iterator<Graph *> *itS=graph->getSubGraphs();
while (itS->hasNext())
cout << itS->next() << endl;
delete itS;

### Source Code

#include <iostream>
#include <tulip/Graph.h>

/**
* Tutorial 004
*
* Create a graph and three subgraphs,
* display all the structure using iterators
*/

using namespace std;
using namespace tlp;

void buildGraph(Graph *graph) {
}

int main() {
//create an empty graph
Graph *graph=tlp::newGraph();

//build the graph
buildGraph(graph);

//build two empty subgraph