<?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[N:M Container]]></title><description><![CDATA[<p>Hi,</p>
<p>ich brauche einen Container, mit dem ich auf eine einfach Art und Weise N:M-Relationen abbilden kann, gemäß dem klassischen Fall Schüler:Kurse.<br />
Ich kenne eine mögliche Implementation so:</p>
<pre><code class="language-cpp">class Pupil
{
    void addToCourse( Course c )
    {
        if ( ! courses.contains( c ) )
            courses.push_back( c )
            c.addPupil( this )
    }

    void remFromCourse( Course c )
    {
        if ( courses.contains( c ) )
            courses.erase( c )
            c.remPupil( this )
    }

    Course[] courses
}

class Course
{
    void addPupil( Pupil p )
    {
        if ( ! pupils.contains( p ) )
            pupils.push_back( p )
            p.addToCourse( this )
    }

    void remPupil( Pupil p )
        ...

    Pupil[] pupils
}
</code></pre>
<p>Den Code zur gegenseitigen &quot;Synchronisation&quot; würde ich gerne aus den eigentlichen Klassen raushalten, deshalb suche ich eine vorgefertigte, abstrahierende Lösung. Weiß da jemand was?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237058/n-m-container</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:54:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237058.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Mar 2009 21:10:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to N:M Container on Mon, 23 Mar 2009 21:10:17 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich brauche einen Container, mit dem ich auf eine einfach Art und Weise N:M-Relationen abbilden kann, gemäß dem klassischen Fall Schüler:Kurse.<br />
Ich kenne eine mögliche Implementation so:</p>
<pre><code class="language-cpp">class Pupil
{
    void addToCourse( Course c )
    {
        if ( ! courses.contains( c ) )
            courses.push_back( c )
            c.addPupil( this )
    }

    void remFromCourse( Course c )
    {
        if ( courses.contains( c ) )
            courses.erase( c )
            c.remPupil( this )
    }

    Course[] courses
}

class Course
{
    void addPupil( Pupil p )
    {
        if ( ! pupils.contains( p ) )
            pupils.push_back( p )
            p.addToCourse( this )
    }

    void remPupil( Pupil p )
        ...

    Pupil[] pupils
}
</code></pre>
<p>Den Code zur gegenseitigen &quot;Synchronisation&quot; würde ich gerne aus den eigentlichen Klassen raushalten, deshalb suche ich eine vorgefertigte, abstrahierende Lösung. Weiß da jemand was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685088</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to N:M Container on Mon, 23 Mar 2009 21:24:05 GMT]]></title><description><![CDATA[<p>Es gab bei Sourceforge mal ne C++-Klasse aufgebaut wie ne (multi-)map mit dem netten kleinen Feature dass man auch das Mapping in die entgegengesetzte Richtung machen kann. Habs aber auf die Schnelle nicht gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685095</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to N:M Container on Mon, 23 Mar 2009 21:26:05 GMT]]></title><description><![CDATA[<p>Boost::BiMap?<br />
<a href="http://www.boost.org/doc/libs/1_38_0/libs/bimap/doc/html/index.html" rel="nofollow">http://www.boost.org/doc/libs/1_38_0/libs/bimap/doc/html/index.html</a></p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685097</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to N:M Container on Mon, 23 Mar 2009 21:32:30 GMT]]></title><description><![CDATA[<p>boost::bimap sieht gut aus, dann hör ich erstmal auf, bei Sourceforge zu suchen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Leider gibt's bei boost mittlerweile so viel, dass ich da keinen richtigen Überblick mehr hab.. Danke euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685098</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to N:M Container on Mon, 23 Mar 2009 22:39:30 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>boost::bimap sieht gut aus, dann hör ich erstmal auf, bei Sourceforge zu suchen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Boost.MultiIndex wäre womöglich auch noch was, falls es ein wenig komplexer sein soll. Boost.Bimap baut auf Boost.MultiIndex auf, soweit ich das weiss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Leider gibt's bei boost mittlerweile so viel, dass ich da keinen richtigen Überblick mehr hab..</p>
</blockquote>
<p>Hier hat man eine gute Übersicht:<br />
<a href="http://www.boost.org/libs/libraries.htm" rel="nofollow">http://www.boost.org/libs/libraries.htm</a></p>
<p>Es lohnt sich immer mal kurz drüber zu fliegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Der Link leitet übrigens immer zur aktuellen Bibliothek weiter.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685125</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 23 Mar 2009 22:39:30 GMT</pubDate></item></channel></rss>