<?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[Mehrdimensonaler Vektor füllen]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gernen einen mehrdimensonalen Vektor füllen.<br />
Beispiel ist mit Vektor und Array, wobei Vektor so nicht klappt.</p>
<pre><code class="language-cpp">vector &lt;vector &lt;double&gt; &gt; arc2;
double arc[maxNodes][maxNodes];

		for (int i=0;i&lt;maxNodes;i++)		
			for (int y=0;y&lt;maxNodes;y++)
			{
				arc[i][y]=noArc;
				arc2[i][y].push_back(noArc);
			}
</code></pre>
<p>Weiß einer wie genau die passende Syntaxe dafür ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243528/mehrdimensonaler-vektor-füllen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 21:11:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243528.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Jun 2009 20:38:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Wed, 17 Jun 2009 20:38:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gernen einen mehrdimensonalen Vektor füllen.<br />
Beispiel ist mit Vektor und Array, wobei Vektor so nicht klappt.</p>
<pre><code class="language-cpp">vector &lt;vector &lt;double&gt; &gt; arc2;
double arc[maxNodes][maxNodes];

		for (int i=0;i&lt;maxNodes;i++)		
			for (int y=0;y&lt;maxNodes;y++)
			{
				arc[i][y]=noArc;
				arc2[i][y].push_back(noArc);
			}
</code></pre>
<p>Weiß einer wie genau die passende Syntaxe dafür ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728476</guid><dc:creator><![CDATA[Krikus]]></dc:creator><pubDate>Wed, 17 Jun 2009 20:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Wed, 17 Jun 2009 20:44:05 GMT]]></title><description><![CDATA[<p>arc2[i][y].push_back(noArc)</p>
<p>arc2 ist vom typ vector&lt; vector&lt;double&gt; &gt;, also ist arc2[i] vom typ vector&lt;double&gt; und arc2[i][y] ist vom typ double. Ein double hat keine methode push_back. Wann legst du ueberhaupt die Vectoren im aeusseren vector an? Du greifst einfach darauf mit dem arc2[i] zu, ohne sie jemals erzeugt zu haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728478</guid><dc:creator><![CDATA[Heinzelotto]]></dc:creator><pubDate>Wed, 17 Jun 2009 20:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Wed, 17 Jun 2009 21:13:14 GMT]]></title><description><![CDATA[<p>Heinzelotto schrieb:</p>
<blockquote>
<p>Wann legst du ueberhaupt die Vectoren im aeusseren vector an? Du greifst einfach darauf mit dem arc2[i] zu, ohne sie jemals erzeugt zu haben...</p>
</blockquote>
<p>Sry verstehe das nicht so ganz.<br />
Könntest du das an einem Beispiel illustrieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1728488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728488</guid><dc:creator><![CDATA[Krikus]]></dc:creator><pubDate>Wed, 17 Jun 2009 21:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Wed, 17 Jun 2009 21:16:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// Im Konstruktor wird die Anzahl der initialen Elemente angegeben
vector &lt;vector &lt;double&gt; &gt; arc2( maxNodes, vector&lt;double&gt;(maxNodes) );

for (int i=0;i&lt;maxNodes;i++)       
    for (int y=0;y&lt;maxNodes;y++)
        arc2[i][y] = noArc;

// Oder um gleich alles mit &quot;noArc&quot; zu initialisieren:
vector &lt;vector &lt;double&gt; &gt; arc2( maxNodes, vector&lt;double&gt;(maxNodes,noArc) );

// Oder ohne vorher die 'vector'en auf die richtige Größe zu setzen:
vector &lt;vector &lt;double&gt; &gt; arc2;
for (int i=0;i&lt;maxNodes;i++)
{
    std::vector&lt;double&gt; v;
    for (int y=0;y&lt;maxNodes;y++)
        v.push_back( noArc;
    arc2.push_back( v );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1728490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1728490</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 17 Jun 2009 21:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Fri, 19 Jun 2009 13:31:01 GMT]]></title><description><![CDATA[<p>Danke für das Beispiel.</p>
<p>ich habe mich für folgendes entschieden:</p>
<pre><code class="language-cpp">vector &lt;vector &lt;double&gt; &gt; arc2;
for (int i=0;i&lt;maxNodes;i++)
{
    std::vector&lt;double&gt; v;
    for (int y=0;y&lt;maxNodes;y++)
        v.push_back( noArc;
    arc2.push_back( v );
}
</code></pre>
<p>Wie kann ich nun nach dem ich es erstellt habe, alle Elemente löschen?<br />
Wenn ich z.B im Programm maxNodes ändere, dann muss ich vorher den vector leeren, bevor er wieder neu aufgebaut wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729470</guid><dc:creator><![CDATA[Krikus]]></dc:creator><pubDate>Fri, 19 Jun 2009 13:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Fri, 19 Jun 2009 13:43:40 GMT]]></title><description><![CDATA[<p>Lies doch die Referenz zu <code>std::vector</code> auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>. Die Funktion, die den Vector leert, hat einen recht treffenden Namen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729481</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 19 Jun 2009 13:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Fri, 19 Jun 2009 14:22:59 GMT]]></title><description><![CDATA[<p>Krikus schrieb:</p>
<blockquote>
<p>Wie kann ich nun nach dem ich es erstellt habe, alle Elemente löschen?</p>
</blockquote>
<pre><code class="language-cpp">arc2.clear(); // schmeisst alles weg ==&gt; 0x0 Matrix
</code></pre>
<p>Krikus schrieb:</p>
<blockquote>
<p>Wenn ich z.B im Programm maxNodes ändere, dann muss ich vorher den vector leeren, bevor er wieder neu aufgebaut wird.</p>
</blockquote>
<p>Nein, musst Du nicht. Du kannst auch auf den Vektoren <strong>resize</strong> aufrufen. Damit kannst Du dann noch etwas Zeit sparen, weil die Vektoren im Vektor ihren reservierten Speicher wiederverwenden können.</p>
<p>Statt überall im Code, wo du diesen &quot;2D-Vektor&quot; benutzt, Dich mit der Verwaltung rumzuärgern, könntest Du dafür auch eine eigene Klasse schreiben, die das ganz alleine regelt, zB &quot;raster2d&quot; (siehe <a href="http://de.wikipedia.org/wiki/Datenkapselung_(Programmierung)" rel="nofollow">http://de.wikipedia.org/wiki/Datenkapselung_(Programmierung)</a>). Dann hast Du im Programm nur eine Stelle, die für die interne Verwaltung eines 2D-Arrays zuständig ist. Vorteil: Du kannst die Details der Implementierung später ändern, ohne dass Dein restliches Programm angepasst werden muss -- sofert die Schnittstelle die gleiche bleibt.</p>
<pre><code class="language-cpp">class raster2d
{
public:
  raster2d(int zeilen, int spalten, double default_wert = 0)
  { reset(zeilen,spalten,default_wert); }

  void reset(int zeilen, int spalten, double default_wert = 0);

  double operator()(int zeile, int spalte) const;
  double&amp; operator()(int zeile, int spalte);

  .....

private:
  std::vector&lt;std::vector&lt;double&gt; &gt; elements_;
  // alternativ std::vector&lt;double&gt; elements_;
};

.....
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729518</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 19 Jun 2009 14:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Fri, 19 Jun 2009 14:31:48 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Krikus schrieb:</p>
<blockquote>
<p>Wenn ich z.B im Programm maxNodes ändere, dann muss ich vorher den vector leeren, bevor er wieder neu aufgebaut wird.</p>
</blockquote>
<p>Nein, musst Du nicht. Du kannst auch auf den Vektoren <strong>resize</strong> aufrufen. Damit kannst Du dann noch etwas Zeit sparen, weil die Vektoren im Vektor ihren reservierten Speicher wiederverwenden können.</p>
</blockquote>
<p>Hm, ich habe ihn so verstanden, dass ein Leeren semantisch wirklich erforderlich ist.</p>
<p>Falls dem wirklich so ist, solltest du bedenken, dass ein <code>resize()</code> beim Vergrössern die alten Elemente unverändert lässt. Abgesehen davon bleibt der Speicher von <code>std::vector</code> auch nach einem <code>clear()</code> -Aufruf erhalten, diesbezüglich hast du also keinen Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729528</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 19 Jun 2009 14:31:48 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Fri, 19 Jun 2009 14:59:31 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Hm, ich habe ihn so verstanden, dass ein Leeren semantisch wirklich erforderlich ist.</p>
<p>Falls dem wirklich so ist, solltest du bedenken, dass ein <code>resize()</code> beim Vergrössern die alten Elemente unverändert lässt.</p>
</blockquote>
<p>Das müsste man natürlich behandeln. Für die &quot;inneren&quot; Vektoren würd ich einfach <code>clear</code> gefolgt von <code>resize(neue_groesse,default_wert)</code> aufrufen.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Abgesehen davon bleibt der Speicher von <code>std::vector</code> auch nach einem <code>clear()</code> -Aufruf erhalten, diesbezüglich hast du also keinen Unterschied.</p>
</blockquote>
<p>Beim &quot;Haupt-Vektor&quot; ist das <code>resize</code> schon sinvoller. Wenn Du bei dem nämlich clear() aufrufst werden seine Elemente zerstört, was in diesem Fall ja Vektoren sind, die sich ggf Speicher organisiert hatten. Ich würde also die ersten <code>min(maxNodes_alt,maxNodes_neu)</code> &quot;inneren&quot; Vektoren einzeln anpassen (mit <code>clear</code> + <code>resize</code> ) und dann den &quot;äußeren&quot; Vektor per <code>resize</code> vergrößern/verkleinern.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729551</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 19 Jun 2009 14:59:31 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensonaler Vektor füllen on Fri, 19 Jun 2009 15:05:14 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Ich würde...</p>
</blockquote>
<p>...vor allen Dingen eine extra Klasse dafür schreiben und nur einen einzigen Vektor als privates Element anlegen. Es kommt im Endeffekt darauf an, wass das Ding können muss. Eine lineare Addressierung aller Elemente (i+j*zeilen) hat in manchen Situationen Vorteile.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729555</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 19 Jun 2009 15:05:14 GMT</pubDate></item></channel></rss>