<?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 problem..]]></title><description><![CDATA[<pre><code class="language-cpp">//hab da ein vector

vector &lt;double*&gt; terminals;
//Und ein Zeiger auf diesen:
vector &lt;double*&gt; *pointer = &amp;terminals;
// jetzt möchte ich den wert von i ( unsigned int)  an position 0 setzen 
*m_DynamicTerminals-&gt;operator [](0)=i;

// das programm stürzt bei der obigen zeile ab ( access violation..)
// der Zeiger ist nicht NULL und ein Zeiger ist auch im Vektor zugewiesen also:
terminals.push_back(new double);

//  ich weiß net mehr weiter
// hab ich die zuweisung falsch gemacht ?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/191482/vector-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 26 Sep 2026 00:58:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191482.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Sep 2007 16:00:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 16:00:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//hab da ein vector

vector &lt;double*&gt; terminals;
//Und ein Zeiger auf diesen:
vector &lt;double*&gt; *pointer = &amp;terminals;
// jetzt möchte ich den wert von i ( unsigned int)  an position 0 setzen 
*m_DynamicTerminals-&gt;operator [](0)=i;

// das programm stürzt bei der obigen zeile ab ( access violation..)
// der Zeiger ist nicht NULL und ein Zeiger ist auch im Vektor zugewiesen also:
terminals.push_back(new double);

//  ich weiß net mehr weiter
// hab ich die zuweisung falsch gemacht ?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1358089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358089</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Mon, 03 Sep 2007 16:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 16:03:15 GMT]]></title><description><![CDATA[<p>Zeile 7: sollte eigentlich nicht<br />
*m_DynamicTerminals-&gt;operator [](0)=i;</p>
<p>sondern<br />
Zeile 7 = *pointer-&gt;operator [](0)=i;<br />
sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358092</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Mon, 03 Sep 2007 16:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 17:33:03 GMT]]></title><description><![CDATA[<p>Versuch doch mal <code>(*pointer)[0] = i;</code> <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>Bzw... Der vector ist ja noch leer, da kannst du das erste Element nicht beschreiben, gibt ja gar kein erstes... Musst halt erst was reinmachen, bevor du's verändern kannst.</p>
<p>Also in dem Sinne halt <code>pointer-&gt;push_back( i );</code></p>
<p>Btw warum hast du den vector <em>und</em> einen Pointer auf eben diesen im selben Scope?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358170</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 03 Sep 2007 17:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 17:45:10 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358182</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 03 Sep 2007 17:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 18:18:45 GMT]]></title><description><![CDATA[<p>hatte ja vorhin schon mit push_back elemente reigelegt, also:</p>
<p>terminals.push_back(new double);</p>
<p>Die Zuweisung war dann doch so richtig hab die jedoh auf ..-&gt;at(i) geändert..</p>
<p>Das Problem war dass ich mir Klassen gearbeitet habe. Also:</p>
<p>Der Vecktor war Teil einer Klasse der an Weitere Klassen per Pointer übergeben wurde.</p>
<p>Der Pointer wurde jedoch benutzt bevor ich den in der anderen Klasse initialisiert wurde</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358209</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Mon, 03 Sep 2007 18:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 18:31:06 GMT]]></title><description><![CDATA[<p>Der einzige Unterschied zwischen at(..) und [..] ist, so glaube ich jedenfalls, dass at(..) prüft, ob eine Index-Überschreitung vorliegt. Aber naja, wenns jetzt funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358226</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 03 Sep 2007 18:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 20:06:50 GMT]]></title><description><![CDATA[<p>.at prüft das zwar zur Laufzeit, das heißt aber nicht das das Programm dann störungsfrei ist. Man bekommt bei einer Verletzung der Bereichsgrenze eine out-of-range Exception an den Kopf geschmissen. Die Bereichsgrenzen zu prüfen ist also IMMER Pflicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358317</guid><dc:creator><![CDATA[asdfghjkl]]></dc:creator><pubDate>Mon, 03 Sep 2007 20:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Mon, 03 Sep 2007 23:14:19 GMT]]></title><description><![CDATA[<p>mir macht noch angst das du zeiger auf doubles verwendest..ist es ggf. nicht besser die doubles direkt in den vector zu schieben?</p>
<p>hast du danach auch fleißig alle doubles mit delete entfernt?</p>
<p>*pointer-&gt;operator [](0)=i;</p>
<p>und hier nicht vergessen das i quasi als adresse benutzt wird, also der wert von i ist ein pointer auf einen double. ist das so gewollt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358382</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Mon, 03 Sep 2007 23:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 06:20:16 GMT]]></title><description><![CDATA[<blockquote>
<p>und hier nicht vergessen das i quasi als adresse benutzt wird, also der wert von i ist ein pointer auf einen double. ist das so gewollt?</p>
</blockquote>
<p>verstehe dass nicht ganz</p>
<p>ich dachte mit &quot;*pointer-&gt;operator [](0)=i;&quot; benutze ich den Inhaltsoperator &quot;*&quot; und kann den Inhalt auf den der Pointer Zeigt ändern.<br />
Also würde ich beim abfragen des Wertes and dem Pointer den Wert i kriegen.</p>
<p>Das Mit den double Zeigern hab ich deswegen gemacht um in einer Klasse den Vektor zu haben(diese existiert nur ein mal)<br />
und in den über 10000 anderen Klassenobjekten nur darrauf mit nem Zeiger zu verweisen um memory zu sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358432</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Tue, 04 Sep 2007 06:20:16 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 06:36:32 GMT]]></title><description><![CDATA[<p>vectorix schrieb:</p>
<blockquote>
<p>Das Mit den double Zeigern hab ich deswegen gemacht um in einer Klasse den Vektor zu haben(diese existiert nur ein mal)<br />
und in den über 10000 anderen Klassenobjekten nur darrauf mit nem Zeiger zu verweisen um memory zu sparen.</p>
</blockquote>
<p>Und wofür brauchst Du <strong>double</strong>-Zeiger, wenn die anderen Klassen auf den <strong>vector</strong> zeigen sollen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358442</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 04 Sep 2007 06:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 06:50:47 GMT]]></title><description><![CDATA[<p>wiederrum andere Klassen haben wiederrum hunderte Objekte die auf die Zeiger im Vektorzeiger zeigen <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 versuche halt überall memory zu sparen da bei der Objektzahl die ich anlege dies zum Problem würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358455</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Tue, 04 Sep 2007 06:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 06:52:56 GMT]]></title><description><![CDATA[<p>vectorix schrieb:</p>
<blockquote>
<p>Ich versuche halt überall memory zu sparen da bei der Objektzahl die ich anlege dies zum Problem würde.</p>
</blockquote>
<p>Wenn es diesen vector wirklich nur einmal gibt, dann hast du damit nichts gespart. Im Gegenteil, du hast mehr Speicher verbraten, weil du zu jedem double noch einen Zeiger angelegt hast. Das ist kompletter Blödsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358458</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 04 Sep 2007 06:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 08:18:09 GMT]]></title><description><![CDATA[<p>jetzt bin ich verwirrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
hirzu möchte ich mal kurz die Topologie der drei Klassen beschreiben<br />
Die klassen sind dabei nicht voneinander abgeleitet..</p>
<pre><code class="language-cpp">// ein mal vorhanden im Programm
class Managerklasse{
//...
vector &lt;double*&gt; vectorDing;
//...
};

// z.B. 100 Objekte im Programm
class KlasseDieDenZeigerNutzt{
      KlasseDieDenZeigerNutzt(vector &lt;double*&gt; *vectorDing);
      vector &lt;double*&gt; *m_VectorDing;
//...
};
// z.B. 10000000 Objekte im Programm
class KlasseDieEinenZeigerImVektorNutzt{
      KlasseDieEinenZeigerImVektorNutzt(double* zeiger);
      double *zeiger
//...
};
</code></pre>
<p>Wenn die voneinander abgeleitet währen ist klar dass ich mir den Mist auch sparen könnte.. die Klassen sind aber alle separat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358500</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Tue, 04 Sep 2007 08:18:09 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 09:04:07 GMT]]></title><description><![CDATA[<p>da spricht nix dagegen die doubles dann direkt in den vector zu schieben.</p>
<pre><code class="language-cpp">// ein mal vorhanden im Programm
class Managerklasse{
//...
vector &lt;double&gt; vectorDing;
//...
};

// z.B. 100 Objekte im Programm
class KlasseDieDenZeigerNutzt{
      KlasseDieDenZeigerNutzt(vector &lt;double&gt; *vectorDing);
      vector &lt;double&gt; *m_VectorDing;
//...
};
// z.B. 10000000 Objekte im Programm
class KlasseDieEinenZeigerImVektorNutzt{
      KlasseDieEinenZeigerImVektorNutzt(double* zeiger); 
      double *zeiger
//sehr gefährlich, willst du dich dann auch über den zeiger im vector bewegen? 
//oder ist das fix? wenn fix dann doch lieber ne reference, wenn du dich 
//bewegen willst würde ich gerne wissen woher du weißt wann du außerhalb des 
//vectors bist
//...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1358522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358522</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Tue, 04 Sep 2007 09:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 09:09:22 GMT]]></title><description><![CDATA[<p>ConfusedGuy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// z.B. 10000000 Objekte im Programm
class KlasseDieEinenZeigerImVektorNutzt{
      KlasseDieEinenZeigerImVektorNutzt(double* zeiger); 
      double *zeiger
//sehr gefährlich, willst du dich dann auch über den zeiger im vector bewegen? 
//oder ist das fix? wenn fix dann doch lieber ne reference, wenn du dich 
//bewegen willst würde ich gerne wissen woher du weißt wann du außerhalb des 
//vectors bist
//...
};
</code></pre>
</blockquote>
<p>Hier ist vor allem gefährlich, daß der vector seinen Speicherbereich umorganisieren kann und dabei alle Referenzen, Iteratoren (sind häufig reine Zeiger) und Zeiger IN den vector ungültig werden können. (wenn die reservierte Kapazität nicht ausreicht für neu hinzukommende Elemente, reserviert er einen größeren Bereich, kopiert alles um und gibt den alten Bereich frei)</p>
<p>Ich würde vermutlich einen Zeiger auf den vector und den Index des beobachteten Elements unterbringen (hängt auch davon ab, wie langlebig die 'KlasseDieEinenZeigerImVektorNutzt'-Objekte sein werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358525</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 04 Sep 2007 09:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 09:15:21 GMT]]></title><description><![CDATA[<p>wenn ich die double Werte direkt in den Vektor schiebe müsste ich in der Klasse &quot;KlasseDieEinenZeigerImVektorNutzt&quot; den Vektorzeiger übergeben statt den double Zeiger.<br />
Würde auch gehen, nur müsste ich noch im selben Objekt definieren welches Vektorelement nun zu gebrauchen ist.</p>
<p>Mit dem Zeiger selbst bewege ich mich nicht.. der wird von der Klasse ausschließlich ausgelesen, und nur von der Managerklasse einmal initialisiert.<br />
Der Wert an diesem Zeiger wird auch nur über die Managerklasse gesetzt.</p>
<p>Ausserhalb des Vektors kann ich also nicht landen.. Die managerklasse passt da schon auf. Die Vektorgröße ist auch statisch.. da sollte nix passieren.</p>
<p>Mit Referenzen hab ich bislang aber nicht gearbeitet da ich eher der Zeiger Typ bin.<br />
Was für ein Vorteil bringen mir denn Referenzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358532</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Tue, 04 Sep 2007 09:15:21 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 09:18:34 GMT]]></title><description><![CDATA[<blockquote>
<p>Hier ist vor allem gefährlich, daß der vector seinen Speicherbereich umorganisieren kann und dabei alle Referenzen, Iteratoren (sind häufig reine Zeiger) und Zeiger IN den vector ungültig werden können. (wenn die reservierte Kapazität nicht ausreicht für neu hinzukommende Elemente, reserviert er einen größeren Bereich, kopiert alles um und gibt den alten Bereich frei)</p>
<p>Ich würde vermutlich einen Zeiger auf den vector und den Index des beobachteten Elements unterbringen (hängt auch davon ab, wie langlebig die 'KlasseDieEinenZeigerImVektorNutzt'-Objekte sein werden).</p>
</blockquote>
<p>dein Post kam kurz vor meinem <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>Danke für alle Hinweise..<br />
Diese Lösung ist also besser wie ich sehe. Habe das mit dem Umorganisieren des Speichers nicht beachtet da ich den Einmal anlege und die Größe nie wieder ändere.<br />
Werde aber diese Lösung wohl umsetzen da ich nicht weiß was die Zukunft bringt <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>Danke an alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358538</guid><dc:creator><![CDATA[vectorix]]></dc:creator><pubDate>Tue, 04 Sep 2007 09:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector problem.. on Tue, 04 Sep 2007 09:37:40 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich würde vermutlich einen Zeiger auf den vector und den Index des beobachteten Elements unterbringen (hängt auch davon ab, wie langlebig die 'KlasseDieEinenZeigerImVektorNutzt'-Objekte sein werden).</p>
</blockquote>
<p>macht es dann überhaupt noch sinn sowas zu nutzen? schließlich sollte ja speicher gespart werden, zeiger auf vector+index = 64 bit = sizeof(double) dann kann man auch direkt den double wert dort ablegen.</p>
<p>reference vs. zeiger: du hast keine zeiger arithmetik und da, wie ich verstanden habdie nutzer klasse nicht iteriert und die vector größe statisch ist(kein umkopieren der daten) solltest du an dieser stelle wohl eher mit ner reference arbeiten.</p>
<p>also</p>
<pre><code class="language-cpp">class KlasseDieEinenZeigerImVektorNutzt{
      KlasseDieEinenZeigerImVektorNutzt(double d):zeiger(d){}; 
      double &amp;zeiger
</code></pre>
<p>wobei eh die frage nach dem sin ist..doubles sind nicht so wirklich groß und selbst wenn du 100000 doubles speicherst hast du nicht mal nen mb belegt..ggf. gibt es andere stellen in deinem prog die du sinnvoller optimieren kannst..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358547</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Tue, 04 Sep 2007 09:37:40 GMT</pubDate></item></channel></rss>