<?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[[Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler]]></title><description><![CDATA[<p>Hallöchen <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>ich hoffe, ich habe mich nicht verguckt im Forum ^^&quot;<br />
Mein Problem:<br />
Ich muss einen schon geschriebenen Code(eine dll) nachvollziehen und mit ein paar Beispielen füttern, damit ich auch die ergebnisse verstehe.</p>
<p>Dabei hat der ursprüngliche Programmierer für ein bool Array diese Deklarierung verwendet.</p>
<pre><code class="language-cpp">std::vector&lt;std::vector&lt;bool &gt; &gt; matrix
</code></pre>
<p>Mein Problem sobald ich es so einbinden will in meine Testklasse kann es nicht mehr kompiliert werden; bzw. das Array wird gar nicht erst befüllt, wenn ich zB es über eine Schleife nur mit &quot;false&quot; befüllen will.</p>
<pre><code class="language-cpp">// Zurücksetzen AM
	for (int i = 0; i &lt; iNNodes-1; i++){
		for (int j = i + 1; j &lt; iNNodes; j++){
			matrix[i][j] = false;
		}
	}
</code></pre>
<p>Beide Quellcode-Stückchen sind noch aus dem Original-Quellcode, daher dachte ich es würde keinen Fehler bringen.<br />
Aber der Kompiler sagt mir dann immer ich bin &quot;out of range&quot; .__.&quot;</p>
<p>Wenn ich dem Array aber dann Dimensionen zuweise zB</p>
<pre><code class="language-cpp">bool matrix[12][12]
</code></pre>
<p>klappt alles... (was mir logisch erscheint).</p>
<p>Ich stehe leider am Anfang meiner C++ &quot;Karriere&quot; (hab bisher nur (ein wenig)in C# /Java programmiert), und komme auch mit der Deklaration von &quot;matrix&quot; im Original-Quellcode nicht ganz klar.</p>
<p>Vielleicht könnt ihr mir ja einen Denkanstoß geben <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 />
Das wäre schön.<br />
An sich kann ich ja für den Test ersteinmal die vorgegebene Dimension verwenden, aber irgendwann muss ich meinem Betreuer ja auch mal &quot;handfeste&quot; Beispiel liefern, und die Dimension nicht immer nur von Hand füllen <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>Viele Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301482/gelöst-std-vector-lt-std-vector-lt-bool-gt-gt-bringt-fehler</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 23:50:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301482.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Mar 2012 13:54:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Thu, 29 Mar 2012 09:32:34 GMT]]></title><description><![CDATA[<p>Hallöchen <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>ich hoffe, ich habe mich nicht verguckt im Forum ^^&quot;<br />
Mein Problem:<br />
Ich muss einen schon geschriebenen Code(eine dll) nachvollziehen und mit ein paar Beispielen füttern, damit ich auch die ergebnisse verstehe.</p>
<p>Dabei hat der ursprüngliche Programmierer für ein bool Array diese Deklarierung verwendet.</p>
<pre><code class="language-cpp">std::vector&lt;std::vector&lt;bool &gt; &gt; matrix
</code></pre>
<p>Mein Problem sobald ich es so einbinden will in meine Testklasse kann es nicht mehr kompiliert werden; bzw. das Array wird gar nicht erst befüllt, wenn ich zB es über eine Schleife nur mit &quot;false&quot; befüllen will.</p>
<pre><code class="language-cpp">// Zurücksetzen AM
	for (int i = 0; i &lt; iNNodes-1; i++){
		for (int j = i + 1; j &lt; iNNodes; j++){
			matrix[i][j] = false;
		}
	}
</code></pre>
<p>Beide Quellcode-Stückchen sind noch aus dem Original-Quellcode, daher dachte ich es würde keinen Fehler bringen.<br />
Aber der Kompiler sagt mir dann immer ich bin &quot;out of range&quot; .__.&quot;</p>
<p>Wenn ich dem Array aber dann Dimensionen zuweise zB</p>
<pre><code class="language-cpp">bool matrix[12][12]
</code></pre>
<p>klappt alles... (was mir logisch erscheint).</p>
<p>Ich stehe leider am Anfang meiner C++ &quot;Karriere&quot; (hab bisher nur (ein wenig)in C# /Java programmiert), und komme auch mit der Deklaration von &quot;matrix&quot; im Original-Quellcode nicht ganz klar.</p>
<p>Vielleicht könnt ihr mir ja einen Denkanstoß geben <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 />
Das wäre schön.<br />
An sich kann ich ja für den Test ersteinmal die vorgegebene Dimension verwenden, aber irgendwann muss ich meinem Betreuer ja auch mal &quot;handfeste&quot; Beispiel liefern, und die Dimension nicht immer nur von Hand füllen <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>Viele Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196209</guid><dc:creator><![CDATA[Norchen]]></dc:creator><pubDate>Thu, 29 Mar 2012 09:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Wed, 28 Mar 2012 14:00:12 GMT]]></title><description><![CDATA[<p>du musst dem Vektor noch eine Groesse zuweisen. Der out_of_range weisst dich klar darauf hin, dass dein Vektor leer ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196215</guid><dc:creator><![CDATA[otze_logout]]></dc:creator><pubDate>Wed, 28 Mar 2012 14:00:12 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Wed, 28 Mar 2012 17:28:18 GMT]]></title><description><![CDATA[<p>otze_logout schrieb:</p>
<blockquote>
<p>Der out_of_range weisst dich klar darauf hin, dass dein Vektor leer ist.</p>
</blockquote>
<p>Das ist mir schon klar, ein bisschen Ahnung habe ich und im debuggen habe ich ja gesehen, dass er das Array leer ist.</p>
<p>Da muss ich nun mal fragen: Ich verstehe es schon richtig, dass ich</p>
<pre><code class="language-cpp">std::vector&lt;std::vector&lt;bool&gt;&gt;matrix
</code></pre>
<p>als 2d Array auffassen kann?<br />
Mein Arbeitskollege meinte ich kann es wie eine Art Liste auffassen und muss nicht unbedingt eine Dimension angeben.</p>
<p>Ich frage mich ja nun, warum, wenn ich das Array wie in meinem obigen zweiten Codeauszug mit false befülle, es einfach die Werte nicht annimmt? Im Debuggen überspringt er komplett den Abschnitt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196321</guid><dc:creator><![CDATA[Norchen]]></dc:creator><pubDate>Wed, 28 Mar 2012 17:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Wed, 28 Mar 2012 17:34:18 GMT]]></title><description><![CDATA[<p>Ein Array ist zu beginn leer, bis du resize() aufgerufen hast oder im Constructor mit den richtigen Werten initialisierst. Oder bis du push_back aufrufst, oder insert...</p>
<p>ach lies die Referenz <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><a href="http://www.sgi.com/tech/stl/Vector.html" rel="nofollow">http://www.sgi.com/tech/stl/Vector.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196328</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 28 Mar 2012 17:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Wed, 28 Mar 2012 17:37:56 GMT]]></title><description><![CDATA[<p>Norchen schrieb:</p>
<blockquote>
<p>Da muss ich nun mal fragen: Ich verstehe es schon richtig, dass ich</p>
<pre><code class="language-cpp">std::vector&lt;std::vector&lt;bool&gt;&gt;matrix
</code></pre>
<p>als 2d Array auffassen kann?<br />
Mein Arbeitskollege meinte ich kann es wie eine Art Liste auffassen und muss nicht unbedingt eine Dimension angeben.</p>
</blockquote>
<p>2D-Array würde ich das Konstrukt nicht nennen. Der Kollege ist schon auf der richtigen Spur. Eine Liste von (unterschiedlich langen**!**) Zeilen trifft es wohl ganz gut. Unter 2D-Array versteht man ja eher, dass die Zeilenlänge fix ist und die Zeilen auch geordnet im Speicher stehen. Das entspräche einem vector (oder statischem Array bei fester Zeilenzahl) von einer statischen Arrayklasse (z.B. std::array).</p>
<blockquote>
<p>Ich frage mich ja nun, warum, wenn ich das Array wie in meinem obigen zweiten Codeauszug mit false befülle, es einfach die Werte nicht annimmt? Im Debuggen überspringt er komplett den Abschnitt.</p>
</blockquote>
<p>Computer machen keine Fehler und überspringen nicht einfach so Programmteile. Dein vector&lt;vector&gt; hat weder Zeilen, noch haben diese Zeilen eine Länge. Wenn du trotzdem darauf zugreifst, passiert eben undefiniertes Verhalten. Das darf auch einfach sein, dass nichts passiert. Es darf auch sein, dass dadurch der Ätna ausbricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196330</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 28 Mar 2012 17:37:56 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Wed, 28 Mar 2012 21:52:49 GMT]]></title><description><![CDATA[<p>btw: von std::vector&lt;bool&gt; wird zu recht abgeraten... kannst du evtl auf std::bitset umsteigen? (zur compilezeit bekannte dimension)<br />
ansonsten musst du halt extrem aufpassen, welche funktionen du aufrufst, in denen am vector umhermanipuliert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196423</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Mar 2012 21:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] std::vector&amp;lt;std::vector&amp;lt;bool &amp;gt; &amp;gt; bringt Fehler on Thu, 29 Mar 2012 09:34:59 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Ein Array ist zu Beginn leer, bis du resize() aufgerufen ...</p>
</blockquote>
<p>Vielen Dank für den Hinweis; ich habe nun auch nochmal nach intensiver suche in diesem unübersichtlichen Code den Initialisierer gefunden: mit resize <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/2764.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--red_heart"
      title="&lt;3"
      alt="❤"
    /><br />
(war eben ein bisschen tricky sich durchzufinden x.x)<br />
Den Befehl resize kannte ich noch nicht, und dachte auch ich benötige ihn nicht...<br />
Wieder etwas gelernt <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>Und auch ganz vielen lieben Dank für die anderen Hinweise/Anregungen, das hilft mir definitv weiter <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>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196462</guid><dc:creator><![CDATA[Norchen]]></dc:creator><pubDate>Thu, 29 Mar 2012 09:34:59 GMT</pubDate></item></channel></rss>