<?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[Array mit doppelt verketteter Liste]]></title><description><![CDATA[<p>Hallo,<br />
ich bin leider ein ziemlich anfänger in C++ habe jedoch ein ziemlich großes Problem für mich.<br />
Ich bräuchte ein Array mit N x M Feldern in dem jeweils eine eigene doppelt verkettete Liste ist.<br />
Kann mir dabei vlt jemand helfen ich würde mich tierisch freuen</p>
<p>mfg Koni</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277326/array-mit-doppelt-verketteter-liste</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 21:51:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277326.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Nov 2010 21:01:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:01:14 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich bin leider ein ziemlich anfänger in C++ habe jedoch ein ziemlich großes Problem für mich.<br />
Ich bräuchte ein Array mit N x M Feldern in dem jeweils eine eigene doppelt verkettete Liste ist.<br />
Kann mir dabei vlt jemand helfen ich würde mich tierisch freuen</p>
<p>mfg Koni</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981444</guid><dc:creator><![CDATA[Koni_CBeginner]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:03:29 GMT]]></title><description><![CDATA[<p>std::list<a href="std::list" rel="nofollow">std::list</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981447</guid><dc:creator><![CDATA[stl]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:14:33 GMT]]></title><description><![CDATA[<p>Wenn du ein bischen mehr dazu schreiben könntest wäre mir echt geholfen.<br />
Vlt noch ein bischen mehr zu meinem Problem Ich berechne die Größe des Arrays erst und möchte dann die spezifische Liste direkt durch die angabe der Zeile und Spalte im Array ansprechen können.<br />
danke Konstantin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981454</guid><dc:creator><![CDATA[Konstantin_CBeginner]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:14:33 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:28:56 GMT]]></title><description><![CDATA[<p>an Deiner Stelle würde ich das ganze in eine Klasse fassen .. etwa so</p>
<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;vector&gt;

template&lt; typename T &gt;
class ArrayNM
{
public:
    ArrayNM( std::size_t n, std::size_t m )
        : m_m( m )
        , m_data( n * m )
    {}
    std::list&lt; T &gt;* operator[]( std::size_t i )
    {
        return &amp;m_data[ i * m_m ];
    }
private:
    std::size_t m_m;
    std::vector&lt; std::list&lt; T &gt; &gt; m_data;
};
</code></pre>
<p>Du hast den Typ in der Liste nicht genannt, daher das Template.</p>
<p>Die Anwendung, etwa von einer Liste von double, sähe dann so aus</p>
<pre><code class="language-cpp">ArrayNM&lt; double &gt; list_arr( 3, 4 );
    list_arr[2][1].push_back( 3.14 );
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981458</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:33:13 GMT]]></title><description><![CDATA[<p>Weisst du überhaupt was eine doppelt verkettete Liste ist? Du kannst in konstanter Zeit Elemente hinzufügen und verschieben, aber das Ansprechen eines Elements an einem bestimmten Index ist extrem langsam - in linearer Zeit - weshalb die <code>std::list</code> keine solchen Zugriffe per <code>[]</code> -Operator zulässt.<br />
Wenn du so etwas dennoch machen willst, und das ist bei einer doppelt verketteten Liste nicht zu empfehlen, dann musst du auf <code>std::advance(list.begin(), index)</code> zurückgreifen.</p>
<p>Wenn ich mir dein Problem so durchlese, sieht ein <code>std::vector</code> bzw. hier der <code>std::vector&lt;std::vector&gt;</code> für deine Aufgabe besser geeignet zu sein. Zugriffe sind dann ganz intuitiv mit <code>data[x][y]</code> möglich.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Warum musst du unbedingt ein Zeiger auf <code>std::list&lt;T&gt;</code> zurückgeben und keine Referenz?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981463</guid><dc:creator><![CDATA[stl]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:44:58 GMT]]></title><description><![CDATA[<p>stl schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Warum musst du unbedingt ein Zeiger auf <code>std::list&lt;T&gt;</code> zurückgeben und keine Referenz?</p>
</blockquote>
<p>weil ansonsten Zeile 2 im zweiten Listing meines Postings nicht funktionieren würde.</p>
<p>Werner Salomon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ArrayNM&lt; double &gt; list_arr( 3, 4 );
    list_arr[2][1].push_back( 3.14 );  // &lt;=== deswegen muss ArrayNM::operator[] einen Zeiger liefern
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1981469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981469</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 21:48:16 GMT]]></title><description><![CDATA[<p>Achso, erst jetzt habe ich die Frage richtig verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981470</guid><dc:creator><![CDATA[stl]]></dc:creator><pubDate>Tue, 16 Nov 2010 21:48:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Tue, 16 Nov 2010 23:12:25 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>stl schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Warum musst du unbedingt ein Zeiger auf <code>std::list&lt;T&gt;</code> zurückgeben und keine Referenz?</p>
</blockquote>
<p>weil ansonsten Zeile 2 im zweiten Listing meines Postings nicht funktionieren würde.</p>
<p>Werner Salomon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ArrayNM&lt; double &gt; list_arr( 3, 4 );
    list_arr[2][1].push_back( 3.14 );  // &lt;=== deswegen muss ArrayNM::operator[] einen Zeiger liefern
</code></pre>
</blockquote>
</blockquote>
<p>Tu dir selbst, der Welt, und uns einen Gefallen, und gib statt dessen einen Proxy zurück.<br />
Der Zeiger-Trick ist zum weinen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981508</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 16 Nov 2010 23:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Wed, 17 Nov 2010 08:48:39 GMT]]></title><description><![CDATA[<p>wenn da ein pointer zurückkommt müsste es dann nicht <code>list_arr[2][1]-&gt;push_back( 3.14 );</code> sein?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: magst du das mit dem proxy ausführen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981561</guid><dc:creator><![CDATA[dead=cat+curiosity]]></dc:creator><pubDate>Wed, 17 Nov 2010 08:48:39 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Wed, 17 Nov 2010 10:02:09 GMT]]></title><description><![CDATA[<p>Wäre es nicht noch besser, in der Klasse einen</p>
<pre><code class="language-cpp">std::vector&lt;T&gt; Arr;
</code></pre>
<p>zu deklarieren? Dann könnte sich der Anwender selber einen Container auswählen</p>
<pre><code class="language-cpp">ArrayNM&lt;std::vector&lt;int&gt; &gt;myarr(xdim,ydim);
</code></pre>
<p>Und auf Elemente könnte dann direkt (bei obiger Deklaration) mit</p>
<pre><code class="language-cpp">myarr[x][y][z]
</code></pre>
<p>zugegriffen werden.<br />
Schnell getestet mit <a href="http://codepad.org/LwR70a8Q" rel="nofollow">Codepad</a> (auch mit Zeigerrückgabe :p ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981594</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Wed, 17 Nov 2010 10:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Wed, 17 Nov 2010 17:40:00 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Tu dir selbst, der Welt, und uns einen Gefallen, und gib statt dessen einen Proxy zurück.<br />
Der Zeiger-Trick ist zum weinen.</p>
</blockquote>
<p>Da muss ich zustimmen, alleine schon weil man Index-Fehler mit <code>assert</code> abfangen könnte.</p>
<p>dead=cat+curiosity schrieb:</p>
<blockquote>
<p>wenn da ein pointer zurückkommt müsste es dann nicht <code>list_arr[2][1]-&gt;push_back( 3.14 );</code> sein?</p>
</blockquote>
<p>Nein, da <code>operator[]</code> bereits dereferenziert.</p>
<p>dead=cat+curiosity schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: magst du das mit dem proxy ausführen?</p>
</blockquote>
<p>Als Proxy meint er eine kleine Klasse, die nur dazu da ist, den zweiten Index-Operator zu ermöglichen. Ein Objekt dieser Klasse muss vom ersten <code>operator[]</code> zurückgegeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981865</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 17 Nov 2010 17:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Thu, 18 Nov 2010 21:54:55 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Tu dir selbst, der Welt, und uns einen Gefallen, und gib statt dessen einen Proxy zurück.<br />
Der Zeiger-Trick ist zum weinen.</p>
</blockquote>
<p>Da muss ich zustimmen, alleine schon weil man Index-Fehler mit <code>assert</code> abfangen könnte.</p>
</blockquote>
<p>Ich glaub' hier wird mit zweierlei Mass gemessen oder hätte einer von Euch beiden es bemängelt, wenn ich ein schlichtes</p>
<pre><code class="language-cpp">std::list&lt;double&gt; arr[N][M];
</code></pre>
<p>vorgeschlagen hätte.</p>
<p>Klar ist ein Proxy eine gute Idee; aber die Entrüstung finde ich unangemessen <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="😉"
    /> . Das ist schon lustig; in der Vergangenheit bin ich für sowas wie einen Proxy schon gescholten worden; das sei für Anfänger zu kompliziert.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982579</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 18 Nov 2010 21:54:55 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Thu, 18 Nov 2010 23:05:19 GMT]]></title><description><![CDATA[<p>Ja ist/war vermutlich übertrieben.<br />
Aber ich finde den Zeiger-Trick echt ...</p>
<p>Sagen wir mal ich würde sowas einem Anfänger nicht hinwerfen, am Ende verwendet er es dann noch.<br />
Dann lieber gleich ohne fancy-shmancy [][].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982602</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 18 Nov 2010 23:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit doppelt verketteter Liste on Thu, 18 Nov 2010 23:08:07 GMT]]></title><description><![CDATA[<p>Zumindest von meiner Seite sollte das kein Vorwurf sein, mehr ein Hinweis.</p>
<p>Und gegen rohe Arrays trete ich andauernd ein! <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="🙂"
    /><br />
Ich weise oft auf <code>std::tr1::array</code> hin. Bei gewissen Anfängern ist es vielleicht auch nicht angebracht. Oder umso mehr, je nach Philosophie.</p>
<p>Hier ist der Zeiger eben so ein Zwischending. Halt nach dem Motto &quot;entweder nur ein einfaches Array oder gleich richtig&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982603</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 18 Nov 2010 23:08:07 GMT</pubDate></item></channel></rss>