<?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[vector statt array]]></title><description><![CDATA[<p>Hallo,<br />
bisher hab ich in Foren immer alles gefunden aber diesmal finde ich zum Thema Vector nicht das passende, darum stell ich die Frage jetzt mal hier.</p>
<p>Ich hätte gerne das Array test[10] auch durch einen vector ersetzt, habe aber keine Ahnung wie ich das definieren und deklarien soll und nachher darauf zugreifen.<br />
Oder ob es überhaupt geht.<br />
Ich möchte das ich nicht von vorne herein wissen müssen wieviel test[] Arrays ich anlegen muss, evtl. will ich auch wieder welche löschen können.</p>
<p>Ich meine damit nicht die Unter-Vectoren test[0][UnterVector].irgendwas kann ich<br />
wie einen Vector behandeln, aber<br />
test[Array][x].irgendwas kann ich nur als Array benutzen.</p>
<p>Ich hoffe ich hab mich klar ausgedrückt.</p>
<pre><code>struct mytest{
    int irgendwas;
    int sonstwas;
};

int main() {
    vector &lt;mytest&gt; test[ 10 ];
    mytest demo;

    demo.irgendwas = 1;
    demo.sonstwas = 2;
    test[0].push_back(demo);

    demo.irgendwas = 11;
    demo.sonstwas = 22;
    test[0].push_back(demo);

    demo.irgendwas = 100;
    demo.sonstwas = 200;
    test[1].push_back(demo);

    for (int i = 0 ;i &lt;= 1 ; i++ ) {
        cout  &lt;&lt;  test[0][i].irgendwas &lt;&lt; endl;
        cout  &lt;&lt;  test[0][i].sonstwas &lt;&lt; endl;
    } 
    cout  &lt;&lt;  test[1][0].irgendwas &lt;&lt; endl;
    cout  &lt;&lt;  test[1][0].sonstwas &lt;&lt; endl;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/193024/vector-statt-array</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 17:27:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193024.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2007 07:44:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 07:47:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
bisher hab ich in Foren immer alles gefunden aber diesmal finde ich zum Thema Vector nicht das passende, darum stell ich die Frage jetzt mal hier.</p>
<p>Ich hätte gerne das Array test[10] auch durch einen vector ersetzt, habe aber keine Ahnung wie ich das definieren und deklarien soll und nachher darauf zugreifen.<br />
Oder ob es überhaupt geht.<br />
Ich möchte das ich nicht von vorne herein wissen müssen wieviel test[] Arrays ich anlegen muss, evtl. will ich auch wieder welche löschen können.</p>
<p>Ich meine damit nicht die Unter-Vectoren test[0][UnterVector].irgendwas kann ich<br />
wie einen Vector behandeln, aber<br />
test[Array][x].irgendwas kann ich nur als Array benutzen.</p>
<p>Ich hoffe ich hab mich klar ausgedrückt.</p>
<pre><code>struct mytest{
    int irgendwas;
    int sonstwas;
};

int main() {
    vector &lt;mytest&gt; test[ 10 ];
    mytest demo;

    demo.irgendwas = 1;
    demo.sonstwas = 2;
    test[0].push_back(demo);

    demo.irgendwas = 11;
    demo.sonstwas = 22;
    test[0].push_back(demo);

    demo.irgendwas = 100;
    demo.sonstwas = 200;
    test[1].push_back(demo);

    for (int i = 0 ;i &lt;= 1 ; i++ ) {
        cout  &lt;&lt;  test[0][i].irgendwas &lt;&lt; endl;
        cout  &lt;&lt;  test[0][i].sonstwas &lt;&lt; endl;
    } 
    cout  &lt;&lt;  test[1][0].irgendwas &lt;&lt; endl;
    cout  &lt;&lt;  test[1][0].sonstwas &lt;&lt; endl;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1369878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369878</guid><dc:creator><![CDATA[Nussknacker]]></dc:creator><pubDate>Fri, 21 Sep 2007 07:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 07:46:59 GMT]]></title><description><![CDATA[<p>Nimm einen &quot;vector&lt;vector&lt;mytest&gt; &gt; test;&quot; (und pass die Größe hinterher mit resize() und ähnlichem an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369879</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Sep 2007 07:46:59 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 07:49:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich hoffe ich hab mich klar ausgedrückt.</p>
</blockquote>
<p>nicht wirklich</p>
<p>willst du sowas?<br />
vector&lt; vector&lt;mytest&gt; &gt; test;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369883</guid><dc:creator><![CDATA[++++!++++]]></dc:creator><pubDate>Fri, 21 Sep 2007 07:49:02 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 07:52:53 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Nimm einen &quot;vector&lt;vector&lt;mytest&gt; &gt; test;&quot; (und pass die Größe hinterher mit resize() und ähnlichem an.</p>
</blockquote>
<pre><code class="language-cpp">vector&lt;vector&lt;mytest&gt; &gt; test(10);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1369889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369889</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 21 Sep 2007 07:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 08:25:03 GMT]]></title><description><![CDATA[<p>Danke,<br />
ja sowas hab ich gesucht, danke es funktioniert.</p>
<p>Jetzt hab ich nur noch ein Problem,</p>
<p>vector&lt;vector&lt;mytest&gt; &gt; test2(10);<br />
mytest demo;<br />
test[0].push_back(demo);</p>
<p>funktioniert wie oben, auch das auslesen<br />
test[0][0] ... test[9][x]</p>
<p>aber wenn ich z.B.<br />
test[2].clear() oder test[2].erase()<br />
benutze, ist der Wert später immer noch drin.</p>
<p>benutze ich test.clear() ist alles gelöscht.<br />
Überprüfe ich danach die Größe mit .size()<br />
ergibt sich bei<br />
test.size() = 0<br />
bei<br />
test[2].size() = immernoch die alte Größe z.B. 2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369905</guid><dc:creator><![CDATA[Nussknacker]]></dc:creator><pubDate>Fri, 21 Sep 2007 08:25:03 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 08:30:17 GMT]]></title><description><![CDATA[<p>Um einzelne Elemente aus dem Hauptvector zu löschen, solltest du dir mal erase() ansehen.</p>
<p>btw:</p>
<p>Nussknacker schrieb:</p>
<blockquote>
<p>benutze ich test.clear() ist alles gelöscht.<br />
Überprüfe ich danach die Größe mit .size()<br />
ergibt sich bei<br />
test.size() = 0<br />
bei<br />
test[2].size() = immernoch die alte Größe z.B. 2</p>
</blockquote>
<p>Das fällt wohl unter &quot;undefined behaviour&quot; - du greifst auf Elemente zu, die nicht (mehr) dem vector gehören.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369910</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Sep 2007 08:30:17 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 08:30:22 GMT]]></title><description><![CDATA[<p>Nussknacker schrieb:</p>
<blockquote>
<p>benutze ich test.clear() ist alles gelöscht.<br />
Überprüfe ich danach die Größe mit .size()<br />
ergibt sich bei<br />
test.size() = 0<br />
bei<br />
test[2].size() = immernoch die alte Größe z.B. 2</p>
</blockquote>
<p>Leichenfledderei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369911</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 21 Sep 2007 08:30:22 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 08:43:53 GMT]]></title><description><![CDATA[<p>Hab nochmal getestet,</p>
<p>test[1].erase(test[1].begin()+1); funktioniert</p>
<p>hatte es vorher so:<br />
test2[1].erase(test2.begin()+1);</p>
<p>nur test2[1].clear() funktioniert nicht, aber dafür kann ich ja erase() benutzen.</p>
<p>Nochmal danke für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369922</guid><dc:creator><![CDATA[Nussknacker]]></dc:creator><pubDate>Fri, 21 Sep 2007 08:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 09:22:25 GMT]]></title><description><![CDATA[<p>Nussknacker schrieb:</p>
<blockquote>
<p>nur test2[1].clear() funktioniert nicht, aber dafür kann ich ja erase() benutzen.</p>
</blockquote>
<p>Nicht? was liefert denn danach ein test2[1].size() ? Wenns 0 ist, hats funktioniert. Dass du evtl. mit test2[1][4] dann noch Werte bekommst ist dann Pech (weils so aussieht als ob es nicht geklappt haette) oder Glueck (dass dir das programm nicht gleich um die Ohren fliegt), denn der operator[] prueft die indexgrenzen nicht, man kann also durchaus Indizes angeben, die nicht im vector sind (hier die 4). Was dabei rauskommt ist allerdings undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369946</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 21 Sep 2007 09:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 09:46:51 GMT]]></title><description><![CDATA[<p>Meine Testläufe haben bei mir folgendes ergeben,</p>
<p>Größen vor clear()<br />
test.size() = 10<br />
test[0].size() = 2<br />
test[1].size() = 3<br />
test[2].size() = 4</p>
<p>benutze ich test.clear()<br />
dann sind die Größen:<br />
test.size() = 0<br />
test[0].size() = 2<br />
test[1].size() = 3<br />
test[2].size() = 4</p>
<p>benutze ich test[1].clear()<br />
dann sind die Größen:<br />
test.size() = 10<br />
test[0].size() = 0<br />
test[1].size() = 0<br />
test[2].size() = 0</p>
<p>Ich benutze den MinGW Compiler, evtl. ist es bei anderen Compilern anders.<br />
Am besten ich benutze nur erase()<br />
oder wenn ich alles löschen will eine Schleife welche zuerst test[0] - test[n] löscht<br />
und danach test.clear() dann müsste alles auf NULL sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369966</guid><dc:creator><![CDATA[Nussknacker]]></dc:creator><pubDate>Fri, 21 Sep 2007 09:46:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 09:52:02 GMT]]></title><description><![CDATA[<p>Das zweite ist auf jeden Fall undefined - aka &quot;Leichenfledderei&quot;, warum der Aufruf <code>test[1].clear();</code> alle Elemente von test löschen sollte, ist mir ein Rätsel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369970</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Sep 2007 09:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 10:18:56 GMT]]></title><description><![CDATA[<p>Hab das Testprogramm nochmal neu geschrieben, nun funktioniert es.<br />
Nur vector&lt;vector&lt;&gt;&gt; drin.</p>
<p>Ich hatte noch die alte Array Version im Programm und die vector&lt;vector&lt;&gt;&gt;<br />
hinten angehängt, hab aber den Namen test2 genannt, von einem struct müsste man<br />
doch mehrere Varianten ableiten können ?<br />
Ich habe schon <strong>test2</strong> für meine clear() Versuche verwendet und nicht <strong>test</strong></p>
<p>Hier alte Array Version mit drin, so:</p>
<pre><code>struct mytest {
    int irgendwas;
    int sonstwas;
} 

vector &lt;mytest&gt; test[ 10 ];
mytest demo;

vector&lt;vector&lt;mytest&gt; &gt; test2(10);
</code></pre>
<p>Aufgefüllt hab ich zuerst die Array Version mit <strong>demo</strong> und danach die vector&lt;vector&lt;&gt;&gt; Version, auch mit <strong>demo</strong>, aber <strong>demo</strong> ist ja nicht mit <strong>test</strong> oder <strong>test2</strong> gekoppelt, oder versteh ich da was falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369996</guid><dc:creator><![CDATA[Nussknacker]]></dc:creator><pubDate>Fri, 21 Sep 2007 10:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 10:43:34 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>warum der Aufruf <code>test[1].clear();</code> alle Elemente von test löschen sollte, ist mir ein Rätsel.</p>
</blockquote>
<p>Tut er nicht. Wenn der vector mit <code>vector&lt;vector&lt;X&gt; &gt; test(10);</code> erstellt wurde, reserviert das dem aeusseren vector speuicher fuer 10 innere vectoren - die werden mit default-ctor initialisiert, also <code>test[i].size() == 0</code> fuer i = 0..9.<br />
Selbst wenn er wie oben geschrieben einmal <code>test[0].push_back(demo);</code> aufgerufen hat, bleiben die anderen inneren vectoren ja verschont.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370023</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 21 Sep 2007 10:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector statt array on Fri, 21 Sep 2007 12:02:01 GMT]]></title><description><![CDATA[<p>Hat sich aufgeklärt, ich hatte einen schreibfehler drin.<br />
Sorry.<br />
Es funktioniert nun alles wie es soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370093</guid><dc:creator><![CDATA[Nussknacker]]></dc:creator><pubDate>Fri, 21 Sep 2007 12:02:01 GMT</pubDate></item></channel></rss>