<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Wie erzeugt man einen Graph mit BOOST Bib (z.B. adjacency_list)?]]></title><description><![CDATA[<p>Hallo,<br />
nach dem Parsen einer XML Datei, habe ich die Knoten (Junction) und Kanten (Edges) als Objekte der Klasse Junction bzw. Edges in jeweils einer Liste gespeichert.<br />
Knoten noch mal in einer Hash Map (boost::unordered_map) gespeichert.</p>
<pre><code class="language-cpp">class Junction {
public:
    Junction();
    Junction(int id, float x, float y);

    int getId();
    float getX();
    float getY();

private:
    unsigned int id;
    float x, y;
};
</code></pre>
<p>und</p>
<pre><code class="language-cpp">class Edge {
public:
    Edge();
    Edge(string id, int from, int to);

    string getId();
    int getFrom();
    int getTo();

private:
    string id;
    int from, to; //Ids von Anfangs- und Ende-Junction
};
</code></pre>
<p>Wie erzeuge ich damit einen Graphen, so dass Knoten über Eigenschaften (Properties) &quot;id&quot;, &quot;x&quot; und &quot;y&quot; und Kanten über &quot;id&quot; verfügen?<br />
Soll ich weiter meine Klassen oder doch Struct, <a href="http://www.boost.org/doc/libs/1_41_0/libs/graph/doc/bundles.html" rel="nofollow">wie hier</a> benutzen?</p>
<pre><code class="language-cpp">struct Junction_str {
    int id;
    float x, y;
};

struct Edge_str {
    string id;
};
</code></pre>
<p>Mein Anfang sieht so aus:</p>
<pre><code class="language-cpp">typedef boost::adjacency_list&lt;
boost::listS, // edge container type
boost::vecS, // vertex container type
boost::bidirectionalS,
Junction, // vertex properties :: oder doch Junction_str
Edge // edge properties :: oder doch Edge_str
&gt; MyGraphType;
//geht das überhaupt so mit den Klassen?
</code></pre>
<p>Wie initialisiere ich einen Graphen?</p>
<pre><code class="language-cpp">MyGraphType map; //oder
MyGraphType map(JunctionList.size());
</code></pre>
<p>Wie füge ich jetzt die Kanten bzw. die Knoten hinzu???<br />
Zur Verfügung stehen 3 Speicherstruckturen:</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction&gt; hashmap;
hashmap junction_map;

list &lt;Junction&gt; JunctionList;
list &lt;Junction&gt;::iterator IterJ;

list &lt;Edge&gt; EdgeList;
list &lt;Edge&gt;::iterator IterE;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/259345/wie-erzeugt-man-einen-graph-mit-boost-bib-z-b-adjacency_list</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 22:13:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259345.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Jan 2010 19:48:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie erzeugt man einen Graph mit BOOST Bib (z.B. adjacency_list)? on Thu, 21 Jan 2010 19:48:56 GMT]]></title><description><![CDATA[<p>Hallo,<br />
nach dem Parsen einer XML Datei, habe ich die Knoten (Junction) und Kanten (Edges) als Objekte der Klasse Junction bzw. Edges in jeweils einer Liste gespeichert.<br />
Knoten noch mal in einer Hash Map (boost::unordered_map) gespeichert.</p>
<pre><code class="language-cpp">class Junction {
public:
    Junction();
    Junction(int id, float x, float y);

    int getId();
    float getX();
    float getY();

private:
    unsigned int id;
    float x, y;
};
</code></pre>
<p>und</p>
<pre><code class="language-cpp">class Edge {
public:
    Edge();
    Edge(string id, int from, int to);

    string getId();
    int getFrom();
    int getTo();

private:
    string id;
    int from, to; //Ids von Anfangs- und Ende-Junction
};
</code></pre>
<p>Wie erzeuge ich damit einen Graphen, so dass Knoten über Eigenschaften (Properties) &quot;id&quot;, &quot;x&quot; und &quot;y&quot; und Kanten über &quot;id&quot; verfügen?<br />
Soll ich weiter meine Klassen oder doch Struct, <a href="http://www.boost.org/doc/libs/1_41_0/libs/graph/doc/bundles.html" rel="nofollow">wie hier</a> benutzen?</p>
<pre><code class="language-cpp">struct Junction_str {
    int id;
    float x, y;
};

struct Edge_str {
    string id;
};
</code></pre>
<p>Mein Anfang sieht so aus:</p>
<pre><code class="language-cpp">typedef boost::adjacency_list&lt;
boost::listS, // edge container type
boost::vecS, // vertex container type
boost::bidirectionalS,
Junction, // vertex properties :: oder doch Junction_str
Edge // edge properties :: oder doch Edge_str
&gt; MyGraphType;
//geht das überhaupt so mit den Klassen?
</code></pre>
<p>Wie initialisiere ich einen Graphen?</p>
<pre><code class="language-cpp">MyGraphType map; //oder
MyGraphType map(JunctionList.size());
</code></pre>
<p>Wie füge ich jetzt die Kanten bzw. die Knoten hinzu???<br />
Zur Verfügung stehen 3 Speicherstruckturen:</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction&gt; hashmap;
hashmap junction_map;

list &lt;Junction&gt; JunctionList;
list &lt;Junction&gt;::iterator IterJ;

list &lt;Edge&gt; EdgeList;
list &lt;Edge&gt;::iterator IterE;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1842876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842876</guid><dc:creator><![CDATA[sugarray21]]></dc:creator><pubDate>Thu, 21 Jan 2010 19:48:56 GMT</pubDate></item></channel></rss>