<?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[Probleme beim Bereitstellen von Speicher für sehr viele Werte]]></title><description><![CDATA[<p>Hallo!<br />
Ich will bis zu 65.000 - ggf. auch mehr - Werte von Typ double speichern.<br />
Der Zugriff soll dabei sehr schnell sein.<br />
Das Problem bei meiner Lösung (siehe Code) ist, dass der Speicher zwar erstmal bereitgestellt wird aber wieder &quot;verloren&quot; geht.<br />
Dh. sobald das Programm aus der Methode rausgeht ist der Speicher wieder &quot;futsch&quot;.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void SPEK::resizeVector(vector&lt; vector&lt;T&gt; &gt; &amp;vec, size_t zeilen, size_t spalten)
{	
    //erste Dimension (Zeilen erzeugen)
    refValues.resize(zeilen);

    //Spalten hinzufügen (2. Dimension)
    for (size_t r = 0; r &lt; maxValues; r++) 
    {
        refValues[r].resize(spalten); 

	// Zellen mit 0 füllen		
	for(size_t c = 0; c &lt; spalten; c++)
	   refValues[r][c] = 0;			
     }
}
</code></pre>
<p>Habe es auch schon mit einem 2D-Array versucht, hat aber keine Besserung gebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228647/probleme-beim-bereitstellen-von-speicher-für-sehr-viele-werte</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 14:35:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228647.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Dec 2008 08:24:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 08:24:26 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich will bis zu 65.000 - ggf. auch mehr - Werte von Typ double speichern.<br />
Der Zugriff soll dabei sehr schnell sein.<br />
Das Problem bei meiner Lösung (siehe Code) ist, dass der Speicher zwar erstmal bereitgestellt wird aber wieder &quot;verloren&quot; geht.<br />
Dh. sobald das Programm aus der Methode rausgeht ist der Speicher wieder &quot;futsch&quot;.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void SPEK::resizeVector(vector&lt; vector&lt;T&gt; &gt; &amp;vec, size_t zeilen, size_t spalten)
{	
    //erste Dimension (Zeilen erzeugen)
    refValues.resize(zeilen);

    //Spalten hinzufügen (2. Dimension)
    for (size_t r = 0; r &lt; maxValues; r++) 
    {
        refValues[r].resize(spalten); 

	// Zellen mit 0 füllen		
	for(size_t c = 0; c &lt; spalten; c++)
	   refValues[r][c] = 0;			
     }
}
</code></pre>
<p>Habe es auch schon mit einem 2D-Array versucht, hat aber keine Besserung gebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623642</guid><dc:creator><![CDATA[bitti1]]></dc:creator><pubDate>Mon, 01 Dec 2008 08:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 08:42:54 GMT]]></title><description><![CDATA[<p>bitti1 schrieb:</p>
<blockquote>
<p>...sobald das Programm aus der Methode rausgeht ist der Speicher wieder &quot;futsch&quot;....</p>
</blockquote>
<p>Also das klingt mir nicht nach einem Speicherproblem (zumal 65K doubles auch nicht wirklich viel sind auf heutigen Kisten), sondern eher nach einem &quot;Kopierproblem&quot;.</p>
<p>Wer oder was sind denn &quot;refValues&quot; und &quot;maxValues&quot; ?<br />
Diese Version funktioniert jedenfalls bei mir:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void resizeVector(vector&lt; vector&lt;T&gt; &gt; &amp;vec, size_t zeilen, size_t spalten) {
    vec.resize(zeilen);

    for (size_t r = 0; r &lt; zeilen; r++)
    {
        vec[r].resize(spalten);

       for(size_t c = 0; c &lt; spalten; c++)
          vec[r][c] = 0;
    }

}

int main() {
   vector&lt;vector&lt;double&gt; &gt; vv;
   cout &lt;&lt; vv.size() &lt;&lt; &quot;\n&quot;;
   for(size_t i=0; i&lt;vv.size(); ++i) cout &lt;&lt; i &lt;&lt; &quot;. &quot; &lt;&lt; vv[i].size() &lt;&lt; &quot;\n&quot;;

   resizeVector(vv, 2, 3);

   cout &lt;&lt; vv.size() &lt;&lt; &quot;\n&quot;;
   for(size_t i=0; i&lt;vv.size(); ++i) cout &lt;&lt; i &lt;&lt; &quot;. &quot; &lt;&lt; vv[i].size() &lt;&lt; &quot;\n&quot;;
   return 0
}
</code></pre>
<p>Weißt Du, dass Du bei resize bereits die Werte initialisieren kannst (jedenfalls mit immer demselben Wert) ?<br />
Ich hätte es eher so gemacht:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void resizeVector2(vector&lt; vector&lt;T&gt; &gt; &amp;vec, size_t zeilen, size_t spalten)
{
   vector&lt;T&gt; tmp(spalten, 0.);
   vec.resize(zeilen, tmp);
}
</code></pre>
<p>(bzw. mir diesen 2Zeiler ganz gespart, wenn er sonst nichts weiter macht <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="😃"
    /> )</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623651</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 01 Dec 2008 08:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 09:22:23 GMT]]></title><description><![CDATA[<p>Vielen, vielen Dank! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Das hat wunderbar funktioniert mit den 2 Zeilen 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>Ich bin mir nicht ganz sicher woher die Probleme kamen.<br />
Kann es sein, dass der Compiler Probleme mit dem Attributnamen 'max_Values' ( -&gt; max. Anzahl an Werten) hatte?<br />
Habe hier mal so etwas gelesen, dass die Kombination Unterstrich '_' gefolgt von einem Großbuchstaben (hier: 'V') Probleme machen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623672</guid><dc:creator><![CDATA[bitti1]]></dc:creator><pubDate>Mon, 01 Dec 2008 09:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 09:26:39 GMT]]></title><description><![CDATA[<p>bitti1 schrieb:</p>
<blockquote>
<p>Habe hier mal so etwas gelesen, dass die Kombination Unterstrich '_' gefolgt von einem Großbuchstaben (hier: 'V') Probleme machen kann.</p>
</blockquote>
<p>Es geht nur um Bezeichner die mit einem oder zwei Unterstrichen beginnen (Auch wenn ich persönlich Unterstriche nur in Makros verwende).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623676</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 01 Dec 2008 09:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 10:04:33 GMT]]></title><description><![CDATA[<p>Die Ursache, dass der Speicher immer &quot;verloren&quot; ging, liegt / lag an folgender Konstruktion:</p>
<pre><code class="language-cpp">//Stadart Konstruktor	
SPEK::SPEK()
{
	//Standartwert
	size_t values = 65000;

	SPEK::SPEK(values);	
}

SPEK::SPEK(size_t values)
{
	this-&gt;maxValues = values;

	resizeVector(refValues, maxValues, 2);
}
</code></pre>
<p>Nach Beendigung des Konstruktors SPEK(size_t values) und Rücksprung in den Parameterlosen Konstruktor gabs den bereitgestellten Speicher nicht mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623680</guid><dc:creator><![CDATA[bitti1]]></dc:creator><pubDate>Mon, 01 Dec 2008 10:04:33 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 10:20:36 GMT]]></title><description><![CDATA[<p>Du könntest die 65000 auch als Defaultwert in die Parameterliste eintragen und dir somit den zweiten Konstruktor sparen!</p>
<pre><code class="language-cpp">class SPEK {
   SPEK( size_t some = 65000 );
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1623688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623688</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 01 Dec 2008 10:20:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 10:28:49 GMT]]></title><description><![CDATA[<p>bitti1 schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">//Stadart Konstruktor	
SPEK::SPEK()
{
...	SPEK::SPEK(values);	
}
</code></pre>
</blockquote>
<p>Der &quot;Quersprung bei Konstruktoren&quot; geht in C++ (noch) nicht. Vermutlich hast Du da ein neues (temporäres) Objekt angelegt, das hinterher wieder gelöscht wurde...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623690</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 01 Dec 2008 10:28:49 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Bereitstellen von Speicher für sehr viele Werte on Mon, 01 Dec 2008 18:14:25 GMT]]></title><description><![CDATA[<p>Auf die Idee bin ich nicht gekommen, dass ich an der Stelle ein temporäres Objekt anlege. Aber es ergibt Sinn und erklärt das Verhalten des Programms.</p>
<p>Vielen Dank an Alle für die Tipps. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623927</guid><dc:creator><![CDATA[bitti1]]></dc:creator><pubDate>Mon, 01 Dec 2008 18:14:25 GMT</pubDate></item></channel></rss>