<?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[dynamische Speicherplatzbeschaffung]]></title><description><![CDATA[<p>Tag,</p>
<p>ich habe folgenden Code:</p>
<pre><code class="language-cpp">int    groesse=100;
double *data;

data = new double [groesse];

// Funktionsaufruf

delete[] data;
</code></pre>
<p>Angenommen, ich brauche im Verlauf des Programms ein Array, dass grösser als 100 ist, wie kann ich mein 'data' dann am besten vergrößern, so dass zu den ursprünglichen 100 Werten noch mehr Werte abgelegt werden können. Mit 'vector' will ich es aber nicht machen, sondern einfach das 'data' vergrößern.</p>
<p>Danke Euch.<br />
V.K.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185390/dynamische-speicherplatzbeschaffung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 03:40:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185390.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Jun 2007 07:52:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 07:52:44 GMT]]></title><description><![CDATA[<p>Tag,</p>
<p>ich habe folgenden Code:</p>
<pre><code class="language-cpp">int    groesse=100;
double *data;

data = new double [groesse];

// Funktionsaufruf

delete[] data;
</code></pre>
<p>Angenommen, ich brauche im Verlauf des Programms ein Array, dass grösser als 100 ist, wie kann ich mein 'data' dann am besten vergrößern, so dass zu den ursprünglichen 100 Werten noch mehr Werte abgelegt werden können. Mit 'vector' will ich es aber nicht machen, sondern einfach das 'data' vergrößern.</p>
<p>Danke Euch.<br />
V.K.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313146</guid><dc:creator><![CDATA[VerbalKint]]></dc:creator><pubDate>Mon, 25 Jun 2007 07:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 07:53:48 GMT]]></title><description><![CDATA[<p>Neuen Block anlegen, alte Daten kopieren, alten Speicher freigeben. Und wieso willst du kein vector verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313149</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 25 Jun 2007 07:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 07:58:27 GMT]]></title><description><![CDATA[<p>Ich will keinen Vektor, weil ich dachte, dass bei sehr hohen Datenmengen die Arbeit mit vectoren länger dauert. Nicht richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313151</guid><dc:creator><![CDATA[VerbalKint]]></dc:creator><pubDate>Mon, 25 Jun 2007 07:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 07:59:10 GMT]]></title><description><![CDATA[<p>nein..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313153</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 07:59:10 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:02:40 GMT]]></title><description><![CDATA[<p>VerbalKint schrieb:</p>
<blockquote>
<p>Ich will keinen Vektor, weil ich dachte, dass bei sehr hohen Datenmengen die Arbeit mit vectoren länger dauert. Nicht richtig?</p>
</blockquote>
<p>Kannst du deine Vermutung begründen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313155</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:02:40 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:08:56 GMT]]></title><description><![CDATA[<p>Die Vermutung basiert auf der Meinung von meinen Arbeitskollegen, die vectoren bei großen Datenmengen ablehnen, weil aufgrund des Listenaufbaus die Suche nach bestimmten Daten zu lange dauern würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313161</guid><dc:creator><![CDATA[VerbalKint]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:11:15 GMT]]></title><description><![CDATA[<p>ein array ist ein array und keine liste!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313162</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:15:41 GMT]]></title><description><![CDATA[<p>Der vector garantiert das die Daten alle hintereinander im Speicher liegen. Mit anderen Worten, sie werden nicht anders repräsentiert als wenn du ein dynamisches Array erzeugst. Also, wo soll das langsamer sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313163</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:18:14 GMT]]></title><description><![CDATA[<p>VerbalKint schrieb:</p>
<blockquote>
<p>Die Vermutung basiert auf der <strong>Meinung von meinen Arbeitskollegen</strong>, die vectoren bei großen Datenmengen ablehnen, weil aufgrund des Listenaufbaus die Suche nach bestimmten Daten zu lange dauern würde.</p>
</blockquote>
<p>Dann solltest du in Zukunft auf solche Meinungen (Meinungen, sie scheinen keine Fakten zu liefern) kritisch hinterfragen! Haben sie Performancetests gemacht? Nein! Haben sie sich den ISO-C++-Standard bzgl. std::vector durchgelesen? Nein! haben sie sich die Implementierung ihrer vector-Implementierung angeschaut? Nein!</p>
<p>Und dann stellen die so eine Behauptung auf? <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="😮"
    /> Einfach nur unprofessionell.</p>
<p>Lass dir gesagt sein, das ein Vector 100% die gleiche Performance wie ein rohes Array hat. Warum? Weil das der ISO-C++-Standard vorgibt. Lediglich eine nicht ISO-konforme Implementierung könnte hier langsamer sein. Aber das ist in der heutigen Zeit eher unwahrscheinlich, da ich mal davon ausgehe, das ihr eine vernünftige C++-Compiler-Suite einsetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313164</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:18:34 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Dann solltest du in Zukunft auf solche Meinungen (Meinungen, sie scheinen keine Fakten zu liefern) kritisch hinterfragen! Haben sie Performancetests gemacht? Nein! Haben sie sich den ISO-C++-Standard bzgl. std::vector durchgelesen? Nein! haben sie sich die Implementierung ihrer vector-Implementierung angeschaut? Nein!</p>
</blockquote>
<p>Ist mir irgendwie schon oft aufgefallen, grad bezüglich der STL, das dieser extremes Ausbremsen der Programme vorgeworfen wird. Und jedesmal ohne wirkliche Fakten zu nennen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313165</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:18:59 GMT]]></title><description><![CDATA[<p>Okay, ich danke Euch für die Aufklärung! Wieder was dazu 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>
]]></description><link>https://www.c-plusplus.net/forum/post/1313166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313166</guid><dc:creator><![CDATA[VerbalKint]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:20:55 GMT]]></title><description><![CDATA[<p>VerbalKint schrieb:</p>
<blockquote>
<p>Die Vermutung basiert auf der Meinung von meinen Arbeitskollegen, die vectoren bei großen Datenmengen ablehnen, weil aufgrund des Listenaufbaus die Suche nach bestimmten Daten zu lange dauern würde.</p>
</blockquote>
<p>Vom Suchverhalten sind beide genauso schlecht. Für eine Suche ist weder ein Array noch ein Vector (ist eigentlich immer ein Array, kümmert sich aber selbstständig um Speicherallokierung...) bei großen Datenmengen zu empfehlen. Dafür gibt es andere Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313168</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:20:55 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:21:35 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>VerbalKint schrieb:</p>
<blockquote>
<p>Die Vermutung basiert auf der Meinung von meinen Arbeitskollegen, die vectoren bei großen Datenmengen ablehnen, weil aufgrund des Listenaufbaus die Suche nach bestimmten Daten zu lange dauern würde.</p>
</blockquote>
<p>Vom Suchverhalten sind beide genauso schlecht. Für eine Suche ist weder ein Array noch ein Vector (ist eigentlich immer ein Array, kümmert sich aber selbstständig um Speicherallokierung...) bei großen Datenmengen zu empfehlen. Dafür gibt es andere Container.</p>
</blockquote>
<p>du nimmst mir die worte aus dem mund <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1313169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313169</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:36:24 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ein array ist ein array und keine liste!</p>
</blockquote>
<p>... und ein std::vector auch (hat zumindestens dessen Zugriffszeit). <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313177</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 08:43:08 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>...<br />
Dann solltest du in Zukunft auf solche Meinungen (Meinungen, sie scheinen keine Fakten zu liefern) kritisch hinterfragen! Haben sie Performancetests gemacht? Nein! Haben sie sich den ISO-C++-Standard bzgl. std::vector durchgelesen? Nein! haben sie sich die Implementierung ihrer vector-Implementierung angeschaut? Nein!...</p>
</blockquote>
<p>Ja - gaaanz so hart würde ich nicht mit ihm ins Gericht gehen. Immerhin hat er ganz klar hervorgehoben, dass es sich um eine <em>Vermutung</em> und eine <em>Meinung</em> (eines Kollegen) handelt. Das ist schon deutlich kritischer als einige Andere hier (Euch natürlich alle ausgenommen) auftreten und das alles als &quot;FAKT&quot; ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ) darstellen.</p>
<p>Und ehrlich gesagt: Ich schlage auch nicht alles selbst in Std nach, was camper, CStoll und Du hier posten. :p<br />
=&gt; Ich vertraue auch Meinungen Anderer (meistens solcher, denen ich mehr KnowHow zutraue) - und Ihr bestimmt auch hier und da.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313180</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 25 Jun 2007 08:43:08 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 09:37:06 GMT]]></title><description><![CDATA[<p>Naja, auf der anderen Seite muss man auch &quot;den Arbeitskollegen&quot; verstehen, zumindest versuchen <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>Das Hauptproblem was zu der &quot;angeblichen Inperformance&quot; der STL fuehrt, ist doch das c-programmierer, oder C++ im C-Stil programmierer mit der STL &quot;konfrontiert&quot; werden und kaum Gelegenheit haben hinter die kulissen zu schauen. Und die Literatur oder andere sogenannte &quot;Experten&quot; tun ihr uebriges.<br />
Wo wird denn schon unterschieden, ob nen C-array dynamisch oder statisch ist um es von nem Vector ersetzen zu lassen ? Neee wenn, dann wird gleich alles ersetzt, obwohl nen vector beim erzeugen nie die performance eines statischen arrays erreichen kann. Besonders bei den strings gilt das halt ... std::string mag zwar modern sein, aber gegen einen buffer fester groesse wie in C oft verwendet wird hat er keine chance.<br />
Bestes beispiel aus der Praxis, der Performance Test der entwicklungsumgebungen in der CT damals, wo .Net gegen JavaRT und STL angetreten sind. Letzter Platz eindeutig - die STL. Jeder der bisserl von C++ und STL ahnung hatte brauchte sich ned wundern, weil so wie der Autor die STL verwendet hatte, tun das maximal blutige Umsteiger bei ihren ersten Gehversuchen <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 />
Auf die Kritik folgte dann halt der die Verteidigung, das durchaus da optimierungspotential vorhanden waer, aber man eben darauf Wert gelegt haette die Tools so zu verwenden wie man es in der Praxis meist taete <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 />
Naja dann brauchen wir uns doch nicht zu wundern ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313202</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Mon, 25 Jun 2007 09:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 09:51:15 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Lass dir gesagt sein, das ein Vector 100% die gleiche Performance wie ein rohes Array hat. Warum? <strong>Weil das der ISO-C++-Standard</strong> vorgibt. Lediglich eine nicht ISO-konforme Implementierung könnte hier langsamer sein. Aber das ist in der heutigen Zeit eher unwahrscheinlich, da ich mal davon ausgehe, das ihr eine vernünftige C++-Compiler-Suite einsetzt.</p>
</blockquote>
<p>Ziemlicher Unfug wird hier behauptet. Was der ISO-C++-Standard vorgibt und was technisch möglich ist sind zwei verschiedene paar Schuhe. Die Indexprüfung entfällt beim Zugriff auf ein rohes Array. Implizit findet eine Indexprüfung beim Zugriff auf einen Vector statt. Letzere Operation kostet Zeit. Es ist deshalb weder technisch und obendrein aus rein logischen Gründen <em>unmöglich</em>, dass man auf Vektordaten 100% genau so schnell zugreifen kann wie auf Arraydaten.<br />
Es sei denn jemandem fällt eine Möglichkeit ein, mit der die implizite Indexprüfung NULL Taktzyklen dauert. Technisch unmöglich, und deshalb ist es unerheblich, was der ISO-C++-Standard in dieser Sache (angeblich) vorgibt.<br />
Die Herren, die den ISO-C++-Standard erfunden haben, haben aber zweifellos genügend Ahnung von technischer Informatik. Folgerung: Es gibt eine solche Vorschrift im ISO-C++ Standard deshalb nicht. Es sei denn Phantasten wie Artchie hätten in dem Gremium das Sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313210</guid><dc:creator><![CDATA[TechnischerFreak]]></dc:creator><pubDate>Mon, 25 Jun 2007 09:51:15 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 09:58:26 GMT]]></title><description><![CDATA[<p>TechnischerFreak schrieb:</p>
<blockquote>
<p>Implizit findet eine Indexprüfung beim Zugriff auf einen Vector statt.</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313212</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 25 Jun 2007 09:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 10:05:32 GMT]]></title><description><![CDATA[<p>genauer: die indexprüfung findet nur statt, wenn man statt operator[] die elementfunktion at verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313215</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 25 Jun 2007 10:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 10:58:13 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>TechnischerFreak schrieb:</p>
<blockquote>
<p>Implizit findet eine Indexprüfung beim Zugriff auf einen Vector statt.</p>
</blockquote>
<p>Nein.</p>
</blockquote>
<p>Es finden noch viel abenteuerliche Dinge als eine Indexprüfung statt. (Automatische) Speicheranforderung, wenn man außerhalb der Vectorgrenzen zugreifen möchte ist da nur ein Beispiel. Ganz ohne das Zutun und oft auch ohne das Wissen des Programmierers.</p>
<p>Aber jeder kann gerne ein geeignetes kleines Testprogramm, einmal mit dyn. Array- und alternativ mit Vector- Datenbehälter schreiben, in dem 100.000 mal eingefügt und 100.000 mal gelesen wird, und das stoppen. (ohne es jetzt probiert zu haben, aber mit dem Vector dauern diese Operationen dreimal so lange). Etwas Geduld, ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313238</guid><dc:creator><![CDATA[techfreak]]></dc:creator><pubDate>Mon, 25 Jun 2007 10:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 11:06:32 GMT]]></title><description><![CDATA[<p>so ein blödsinn. willste mal eine implementation von operator[] sehen?</p>
<pre><code class="language-cpp">reference
vector::operator[](size_type __n)
{ return *(begin() + __n); }
</code></pre>
<p>wo ist da auch nur ein check, der die performance beeinflusst? richtig: es gibt keinen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313244</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:06:32 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 11:11:47 GMT]]></title><description><![CDATA[<p>TechnischerFreak schrieb:</p>
<blockquote>
<p>Artchi schrieb:</p>
<blockquote>
<p>Lass dir gesagt sein, das ein Vector 100% die gleiche Performance wie ein rohes Array hat. Warum? <strong>Weil das der ISO-C++-Standard</strong> vorgibt. Lediglich eine nicht ISO-konforme Implementierung könnte hier langsamer sein. Aber das ist in der heutigen Zeit eher unwahrscheinlich, da ich mal davon ausgehe, das ihr eine vernünftige C++-Compiler-Suite einsetzt.</p>
</blockquote>
<p>Ziemlicher Unfug wird hier behauptet. Was der ISO-C++-Standard vorgibt und was technisch möglich ist sind zwei verschiedene paar Schuhe. Die Indexprüfung entfällt beim Zugriff auf ein rohes Array. Implizit findet eine Indexprüfung beim Zugriff auf einen Vector statt.</p>
</blockquote>
<p>Nein</p>
<blockquote>
<p>Letzere Operation kostet Zeit. Es ist deshalb weder technisch und obendrein aus rein logischen Gründen <em>unmöglich</em>, dass man auf Vektordaten 100% genau so schnell zugreifen kann wie auf Arraydaten.<br />
Es sei denn jemandem fällt eine Möglichkeit ein, mit der die implizite Indexprüfung NULL Taktzyklen dauert. Technisch unmöglich, und deshalb ist es unerheblich, was der ISO-C++-Standard in dieser Sache (angeblich) vorgibt.<br />
Die Herren, die den ISO-C++-Standard erfunden haben, haben aber zweifellos genügend Ahnung von technischer Informatik.</p>
</blockquote>
<p>Nein</p>
<blockquote>
<p>Folgerung: Es gibt eine solche Vorschrift im ISO-C++ Standard deshalb nicht. Es sei denn Phantasten wie Artchie hätten in dem Gremium das Sagen.</p>
</blockquote>
<p>Koffer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313246</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 11:14:31 GMT]]></title><description><![CDATA[<p>techfreak schrieb:</p>
<blockquote>
<p>Es finden noch viel abenteuerliche Dinge als eine Indexprüfung statt. (Automatische) Speicheranforderung, wenn man außerhalb der Vectorgrenzen zugreifen möchte ist da nur ein Beispiel. Ganz ohne das Zutun und oft auch ohne das Wissen des Programmierers.</p>
</blockquote>
<p>Diese Behauptung ist in der Tat der Brüller des Tages! <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="😃"
    /> <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="😃"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1313248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313248</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:14:31 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 11:15:58 GMT]]></title><description><![CDATA[<p>&quot;TechnischerFreak&quot; und &quot;techfreak&quot; sind ziemlich gute Beispiele für &quot;Andere&quot; im Sinne von:</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>...Immerhin hat er [VerbalKint AnmdVerf] ganz klar hervorgehoben, dass es sich um eine <em>Vermutung</em> und eine <em>Meinung</em> (eines Kollegen) handelt. Das ist schon deutlich kritischer als einige Andere hier (Euch natürlich alle ausgenommen) auftreten und das alles als &quot;FAKT&quot; ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ) darstellen...</p>
</blockquote>
<p>Also von mir nochmal ein explizites Lob an VerbalKint, der weiß und klar äußert, wo er Ahnung hat und wo nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313249</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:15:58 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 11:22:49 GMT]]></title><description><![CDATA[<p>techfreak schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>TechnischerFreak schrieb:</p>
<blockquote>
<p>Implizit findet eine Indexprüfung beim Zugriff auf einen Vector statt.</p>
</blockquote>
<p>Nein.</p>
</blockquote>
<p>Es finden noch viel abenteuerliche Dinge als eine Indexprüfung statt. (Automatische) Speicheranforderung, wenn man außerhalb der Vectorgrenzen zugreifen möchte ist da nur ein Beispiel. Ganz ohne das Zutun und oft auch ohne das Wissen des Programmierers.</p>
<p>Aber jeder kann gerne ein geeignetes kleines Testprogramm, einmal mit dyn. Array- und alternativ mit Vector- Datenbehälter schreiben, in dem 100.000 mal eingefügt und 100.000 mal gelesen wird, und das stoppen. (ohne es jetzt probiert zu haben, aber mit dem Vector dauern diese Operationen dreimal so lange). Etwas Geduld, ...</p>
</blockquote>
<p>Du solltest mal 2 Dinge tun: zum einen den Standard lesen und zum anderen genau das, was Du vorschlägst.</p>
<p>Der opertor[] von std::vector macht keine Indexprüfung und vergrössert auch nicht automatisch den Speicher. Das macht die std::map. Das hast Du vielleicht verwechselt.</p>
<p>Der vollständigkeit halber habe ich 2 kleine Testprogramme geschrieben. Das Ergebnis ist, daß der std::vector genausso schnell ist, wie das array. Hier meine Programme (und immer schön mit -O2 übersetzen, wenn Geschwindigkeit getestet wird):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

const unsigned N = 1000000;

int main(int argc, char* argv[])
{
  try
  {
    int a[N];
    for (unsigned n = 0; n &lt; 10; ++n)
    {
      for (int i = 0; i &lt; N; ++i)
        a[i] = i;
      int sum = 0;
      for (int i = 0; i &lt; N; ++i)
        sum += a[i];
      std::cout &lt;&lt; sum &lt;&lt; std::endl;
    }
  }
  catch (const std::exception&amp; e)
  {
    std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
  }
}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

const unsigned N = 1000000;

int main(int argc, char* argv[])
{
  try
  {
    std::vector&lt;int&gt; a(N);
    for (unsigned n = 0; n &lt; 10; ++n)
    {
      for (int i = 0; i &lt; N; ++i)
        a[i] = i;
      int sum = 0;
      for (int i = 0; i &lt; N; ++i)
        sum += a[i];
      std::cout &lt;&lt; sum &lt;&lt; std::endl;
    }
  }
  catch (const std::exception&amp; e)
  {
    std::cerr &lt;&lt; e.what() &lt;&lt; std::endl;
  }
}
</code></pre>
<p>PS: man kann es natürlich auch so ausdrücken, wie LordJaxom <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313254</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:22:49 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Speicherplatzbeschaffung on Mon, 25 Jun 2007 11:34:45 GMT]]></title><description><![CDATA[<p>Nochmal zu tntnet's Testprogrammen:</p>
<p>Mit dem GCC 4.1 (-O3) auf Linux kann ich seine Beobachtung bestätigen. Da sind die beiden Testprogramme aber auf die Nanosekunde gleich schnell (über Durchschnitt natürlich).</p>
<p>Mit dem MSVC++ 8.0 (Release) ist die Vector-Implementierung im Schnitt 15% langsamer als die Array-Implementierung. Von Faktor zwei oder gar drei ist hier jedoch überhaupt nichts zu sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313263</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 25 Jun 2007 11:34:45 GMT</pubDate></item></channel></rss>