<?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[Wie heißt das private Array mit dem Inhalt des std::vector?]]></title><description><![CDATA[<p>Moin,<br />
Weiß jemand, wie der private Pointer in std::vector heißt, der auf den Inhalt zeigt?<br />
Ich will mir in einer eigenen Vektor-Klasse, die von std::vector erbt, eine Funktion schreiben, die mir die Adresse des Arrays zurückgibt, um ihn effizienter sortieren zu können oder die Sortierfunktion als friend-funktion schreiben.</p>
<p>Vielen Dank im Voraus!</p>
<p>Gruß<br />
wxSkip</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256426/wie-heißt-das-private-array-mit-dem-inhalt-des-std-vector</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 08:06:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256426.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Dec 2009 17:47:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 17:47:35 GMT]]></title><description><![CDATA[<p>Moin,<br />
Weiß jemand, wie der private Pointer in std::vector heißt, der auf den Inhalt zeigt?<br />
Ich will mir in einer eigenen Vektor-Klasse, die von std::vector erbt, eine Funktion schreiben, die mir die Adresse des Arrays zurückgibt, um ihn effizienter sortieren zu können oder die Sortierfunktion als friend-funktion schreiben.</p>
<p>Vielen Dank im Voraus!</p>
<p>Gruß<br />
wxSkip</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821642</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 17:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 17:57:56 GMT]]></title><description><![CDATA[<p>Das ist gefährlich, weil der Name des privaten Zeigers nicht standardisiert ist (warum auch). Es reicht also eine neue Compilerversion aus, die std::vector evtl. anders implementiert, damit dein Code nicht mehr läuft. Nimm die Iteratoren, die sind kein Stück weniger effizient.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821643</guid><dc:creator><![CDATA[GEFAHR GEFAHR GEFAHR]]></dc:creator><pubDate>Sat, 12 Dec 2009 17:57:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 17:59:07 GMT]]></title><description><![CDATA[<p>Nein, mach sowas nicht! Das widerspricht dem Prinzip der Kapselung und Objektorientierung.</p>
<p><code>std::sort()</code> wird mit ziemlicher Sicherheit effizienter sortieren, als irgendwas, das du schreiben würdest. Die Standardbibliothek wurde nämlich über Jahre hinweg entwickelt und man kann davon ausgehen, dass die Entwickler sich auch über Optimierungsmöglichkeiten Gedanken gemacht haben.</p>
<p>So sieht ein Aufruf aus. Mehr Infos findest du unter <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>.</p>
<pre><code class="language-cpp">std::sort(vec.begin(), vec.end());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1821644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821644</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 12 Dec 2009 17:59:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 17:59:49 GMT]]></title><description><![CDATA[<p>OK, aber das müsste doch wenn dann nicht am Compiler liegen, sondern an der STL-Version (ok, die wird mit dem Compiler mitgeliefert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821645</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 17:59:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:01:27 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nein, mach sowas nicht! Das widerspricht dem Prinzip der Kapselung und Objektorientierung.</p>
<p><code>std::sort()</code> wird mit ziemlicher Sicherheit effizienter sortieren, als irgendwas, das du schreiben würdest. Die Standardbibliothek wurde nämlich über Jahre hinweg entwickelt und man kann davon ausgehen, dass die Entwickler sich auch über Optimierungsmöglichkeiten Gedanken gemacht haben.</p>
<p>So sieht ein Aufruf aus. Mehr Infos findest du unter <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>.</p>
<pre><code class="language-cpp">std::sort(vec.begin(), vec.end());
</code></pre>
</blockquote>
<p>Komischerweise hab ich erst neulich eine Funktion geschrieben, die schneller sortiert...<br />
Jetzt wollte ich schauen, ob meine Sortierfunktion für C-Arrays noch schneller darauf läuft...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821647</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:03:07 GMT]]></title><description><![CDATA[<p>Ja natürlich gehts um die Version der Standardlibrary, aber die ist wie du schon sagtest mit dem Compiler recht gut verdrahtet. Welchen Algorithmus hast du denn implementiert? AFAIK nutzen einige std::sort Implementierungen Quicksort und der hat im Worst-Case ja immer noch O(n²), so gesehen könntest du schon recht haben. <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/1821648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821648</guid><dc:creator><![CDATA[GEFAHR GEFAHR GEFAHR]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:04:48 GMT]]></title><description><![CDATA[<p>GEFAHR GEFAHR GEFAHR schrieb:</p>
<blockquote>
<p>Ja natürlich gehts um die Version der Standardlibrary, aber die ist wie du schon sagtest mit dem Compiler recht gut verdrahtet. Welchen Algorithmus hast du denn implementiert? AFAIK nutzen einige std::sort Implementierungen Quicksort und der hat im Worst-Case ja immer noch O(n²), so gesehen könntest du schon recht haben. <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>
</blockquote>
<p>Tatsächlich? Ich dachte immer die benutzen ein ziemlich gut optimiertes IntroSort?!</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821649</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:04:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:14:50 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Komischerweise hab ich erst neulich eine Funktion geschrieben, die schneller sortiert... Jetzt wollte ich schauen, ob meine Sortierfunktion für C-Arrays noch schneller darauf läuft...</p>
</blockquote>
<p>Kann sein, dass es für deinen spezifischen Fall schneller war. Ich denke, <code>std::sort()</code> ist auf grosse Datenmengen ausgelegt und im Allgemeinen keine schlechte Wahl.</p>
<p>Dann schreib deinen Sortieralgorithmus basierend auf Iteratoren oder Indizes. Es gibt keinen Grund, wieso du den internen Zeiger kennen müsstest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821651</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:18:20 GMT]]></title><description><![CDATA[<p>Zeiger auf das interne Array? Hier:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; myVector(100);
int* myIntAttay = &amp;myVector[0];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1821652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821652</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:20:40 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nein, mach sowas nicht! Das widerspricht dem Prinzip der Kapselung und Objektorientierung.</p>
<p><code>std::sort()</code> wird mit ziemlicher Sicherheit effizienter sortieren, als irgendwas, das du schreiben würdest. Die Standardbibliothek wurde nämlich über Jahre hinweg entwickelt und man kann davon ausgehen, dass die Entwickler sich auch über Optimierungsmöglichkeiten Gedanken gemacht haben.</p>
<p>So sieht ein Aufruf aus. Mehr Infos findest du unter <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>.</p>
<pre><code class="language-cpp">std::sort(vec.begin(), vec.end());
</code></pre>
</blockquote>
<p>1.Eine friend-Funktion widerspricht dem Prinzip aber nicht, oder?<br />
2.Wenn ich Sicherheit wollte, würde ich nicht C++ programmieren <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/1821653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821653</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:30:03 GMT]]></title><description><![CDATA[<p>Doch gerade eine friend-Funktion widerspricht dem Prinzip. Deshalb muss die Klasse selbst auch sagen, wer ihre Freunde sind. Ohne Einladung bleibt man vor der Tür stehen. <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>SideWinder: Ja du scheinst recht zu haben - meine Information ist auch schon etwas älter. <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/1821655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821655</guid><dc:creator><![CDATA[GEFAHR GEFAHR GEFAHR]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:30:49 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>1.Eine friend-Funktion widerspricht dem Prinzip aber nicht, oder?</p>
</blockquote>
<p>Natürlich widerspricht es dem Prinzip, du müsstest schliesslich den <code>std::vector</code> verändern!</p>
<p>wxSkip schrieb:</p>
<blockquote>
<p>2.Wenn ich Sicherheit wollte, würde ich nicht C++ programmieren <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>
</blockquote>
<p>In der Tat sehr einfallsreich. Dirty Hacks, wie du sie gerade versuchst, würde ich nicht als modernes C++ bezeichnen. Aber weil es möglich ist, darf man nicht mehr selbst nachdenken, genau. <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="🙄"
    /></p>
<p>Sag einfach, warum du meinst, direkt auf die Interna zugreifen zu wollen. Du kannst</p>
<ul>
<li>Iteratoren benutzen</li>
<li>Indizes benutzen, genau wie beim C-Array</li>
<li>Icematix' Variante einsetzen, weil <code>std::vector</code> das garantiert. Aber stell dich darauf ein, dass du im Debug-Modus keine Sicherheitsabfragen mehr hast.</li>
</ul>
<p>Im Ernst: Wenn dein Compiler und deine Standardbibliotheken irgendetwas taugen, sollten alle Möglichkeiten ungefähr gleich schnell sein (deaktivierbare Laufzeitchecks mal nicht berücksichtigt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821656</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:30:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:32:21 GMT]]></title><description><![CDATA[<p>Bei Icematix' Variante stürzt das Programm aber immer ab, wahrscheinlich, weil vec[0] eine Referenz zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821657</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:32:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:35:19 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Bei Icematix' Variante stürzt das Programm aber immer ab, wahrscheinlich, weil vec[0] eine Referenz zurückgibt.</p>
</blockquote>
<p>Wahrscheinlich eher, weil du die besagten Sicherheitsabfragen nicht mehr hast und ausserhalb des gültigen Bereichs zugreifst.</p>
<p>Schreib dein Programm zuerst korrekt und optimiere dann. Für ersteres kannst du den überladenen <code>operator[]</code> oder noch besser <code>at()</code> verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821658</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:34:33 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>1.Eine friend-Funktion widerspricht dem Prinzip aber nicht, oder?</p>
</blockquote>
<p>Natürlich widerspricht es dem Prinzip, du müsstest schliesslich den <code>std::vector</code> verändern!</p>
</blockquote>
<p>Nein, ich wollte ja gerade eine eigene Vektor-Klasse machen, die von std::vector erbt, und da würde ich ja nicht den <code>std::vector</code> ändern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821659</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:36:41 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Bei Icematix' Variante stürzt das Programm aber immer ab, wahrscheinlich, weil vec[0] eine Referenz zurückgibt.</p>
</blockquote>
<p>Wahrscheinlich eher, weil du die besagten Sicherheitsabfragen nicht mehr hast und ausserhalb des gültigen Bereichs zugreifst.</p>
<p>Schreib dein Programm zuerst korrekt und optimiere dann. Für ersteres kannst du den normalen <code>std::vector::operator[]</code> verwenden.</p>
</blockquote>
<p>Programm: (nur ein Testprogramm)</p>
<pre><code class="language-cpp">vector&lt;int&gt; vec;
    vec[0] = 12345;
    int *ip = &amp;vec[0];
    printf(&quot;%d&quot;, *ip);
</code></pre>
<p>-&gt; stürzt ab, obwohl ohne Kompilierfehler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821660</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:39:27 GMT]]></title><description><![CDATA[<p>Wenn du dich in die Klassenhierarchie einklinkst, brichst du damit die Kapselung auf. Es mag vielleicht die eleganteste Methode sein, dies zu tun, ändert aber nichts am eigentlichen Problem.</p>
<p>Das Testprogramm ist falsch, weil der Vector keine elemente enthält. Du greifst auf das nullste Element zu, obwohl es nie erzeugt wurde. Ändere die zweite Zeile in einen push_back()-Aufruf. Genau aus diesem Grund raten wir dir hier zu Iteratoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821663</guid><dc:creator><![CDATA[GEFAHR GEFAHR GEFAHR]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:46:34 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Nein, ich wollte ja gerade eine eigene Vektor-Klasse machen, die von std::vector erbt</p>
</blockquote>
<p>Davon rate ich dir ebenfalls ab. Nur weil du die Methoden nicht neu deklarieren willst, solltest du nicht von <code>std::vector</code> erben. Aggregation ist in dem Falle sinnvoller.</p>
<p>wxSkip schrieb:</p>
<blockquote>
<p>und da würde ich ja nicht den <code>std::vector</code> ändern</p>
</blockquote>
<p>Ja, aber wenn du in deiner eigenen Klasse ein <code>friend</code> nach aussen machst, kannst du immer noch nicht auf <code>std::vector</code> zugreifen.</p>
<p>Aber wie gesagt: Das ist alles gar nicht nötig.</p>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Programm: (nur ein Testprogramm)</p>
<pre><code class="language-cpp">vector&lt;int&gt; vec;
    vec[0] = 12345;
    int *ip = &amp;vec[0];
    printf(&quot;%d&quot;, *ip);
</code></pre>
<p>-&gt; stürzt ab, obwohl ohne Kompilierfehler</p>
</blockquote>
<p>Eben, dein Code ist inkorrekt. Das ist das gleiche Problem wie hier:</p>
<pre><code class="language-cpp">int vec[2];
vec[2] = 12345;
</code></pre>
<p>P.S.: Versteh das nicht falsch, aber wenn du solche Problematik nicht erkennst, bezweifle ich mal, dass du auf die Schnelle ein besseres und dennoch allgemeingültiges <code>std::sort()</code> hinkriegst. Du bist wahrscheinlich besser beraten, wenn du vorgefertigte Lösungen anwenden würdest, da diese auch bugfrei sind. Es gibt nichts Schlimmeres als undefiniertes Verhalten, das man erst Minuten nach dem Auftreten erkennt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821665</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 18:47:12 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Nein, ich wollte ja gerade eine eigene Vektor-Klasse machen, die von std::vector erbt</p>
</blockquote>
<p>Wie kommt man denn auf die Idee, von std::vector zu erben? Wozu soll das gut sein? Was hilft Dir das denn, wenn Du etwas sortieren willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821666</guid><dc:creator><![CDATA[mann ey!]]></dc:creator><pubDate>Sat, 12 Dec 2009 18:47:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 19:17:15 GMT]]></title><description><![CDATA[<p>GEFAHR GEFAHR GEFAHR schrieb:</p>
<blockquote>
<p>Wenn du dich in die Klassenhierarchie einklinkst, brichst du damit die Kapselung auf. Es mag vielleicht die eleganteste Methode sein, dies zu tun, ändert aber nichts am eigentlichen Problem.</p>
<p>Das Testprogramm ist falsch, weil der Vector keine elemente enthält. Du greifst auf das nullste Element zu, obwohl es nie erzeugt wurde. Ändere die zweite Zeile in einen push_back()-Aufruf. Genau aus diesem Grund raten wir dir hier zu Iteratoren.</p>
</blockquote>
<p>Danke, wenn ich den Vektor mit 5 initialisiere, funktionierts!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821683</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 19:17:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 19:29:15 GMT]]></title><description><![CDATA[<p>mann ey! schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Nein, ich wollte ja gerade eine eigene Vektor-Klasse machen, die von std::vector erbt</p>
</blockquote>
<p>Wie kommt man denn auf die Idee, von std::vector zu erben? Wozu soll das gut sein? Was hilft Dir das denn, wenn Du etwas sortieren willst?</p>
</blockquote>
<p>Dann kann ich mir dort meine eigenen Funktionen machen oder friend-Funktionen deklarieren oder so...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821689</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 19:29:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 19:45:27 GMT]]></title><description><![CDATA[<p>Komisch... Mein Quicksort für Vektoren ist schneller als mein Quicksort für C-Arrays mit der Adresse des Arrays aufgerufen, obwohl beide genau denselben Algorithmus nutzen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821694</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 19:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 19:55:27 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Komisch... Mein Quicksort für Vektoren ist schneller als mein Quicksort für C-Arrays mit der Adresse des Arrays aufgerufen, obwohl beide genau denselben Algorithmus nutzen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Koenntest du bitte mal Implementierung und Testprogramm posten, damit andere das auch nachvollziehen koennen? <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/1821697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821697</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Sat, 12 Dec 2009 19:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 19:56:51 GMT]]></title><description><![CDATA[<p>Gerne!</p>
<pre><code class="language-cpp">template&lt;class Type&gt; inline void vquicksort2(myvector&lt;Type&gt; &amp;in, register int size, register int pos = 0)
{
    register Type tmp;
    register int right = pos + size - 1;
    register int left = pos;
    register double av = (in.at(pos) + in.at(pos+size-1)) / 2.0;

    while(left &lt; right)
    {
        if (in.at(left) &gt; av)
        {
            if (av &gt; in.at(right))
            {
                tmp = in.at(left);
                in.at(left) = in.at(right);
                in.at(right) = tmp;
                left++;
            }
            right--;
        }
        else
        {
            if (av &lt;= in.at(right)) right--;
            left++;
        }
    }
    if(left == right &amp;&amp; in.at(left) &lt;= av) left++;

    if((right = left-pos) &lt; 2)return;
    else vquicksort2(in, right, pos);
    if((right = size-left+pos) &lt; 2) return;
    else vquicksort2(in, right, left - pos);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1821698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821698</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 19:56:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 19:58:40 GMT]]></title><description><![CDATA[<p>Du hast das Testprogramm vergessen <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/1821700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821700</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Sat, 12 Dec 2009 19:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wie heißt das private Array mit dem Inhalt des std::vector? on Sat, 12 Dec 2009 20:07:37 GMT]]></title><description><![CDATA[<p>Ach so, das Programm, was das aufruft...</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;ctime&gt;

#define SIZE 20000000

using namespace std;

template &lt;class Type&gt; inline void vquicksort2(vector&lt;Type&gt; &amp;in, register int size, register int pos = 0);

inline double getProgramTime()
{
    return clock() / (double)CLOCKS_PER_SEC;
}

int main()
{
    vector&lt;double&gt; v1(SIZE), v2(SIZE), v3(SIZE);
    for(int c = 0; c &lt; SIZE; c++) v1[c] = rand();
    for(int c = 0; c &lt; SIZE; c++) v2[c] = v1[c];
    printf(&quot;Start.\n&quot;);
    register double y = getProgramTime();
    sort(v1.begin(), v1.end());
    cout &lt;&lt; &quot;Sort-Zeit: &quot; &lt;&lt; getProgramTime() - y &lt;&lt; &quot;s\n&quot;;
    y = getProgramTime();
    vquicksort2(v2, v2.size());
    cout &lt;&lt; &quot;Vquicksort2-Zeit: &quot; &lt;&lt; getProgramTime() - y &lt;&lt; &quot;s\n&quot;;
}

template &lt;class Type&gt; inline void vquicksort2(vector&lt;Type&gt; &amp;in, register int size, register int pos = 0)
{
    register Type tmp;
    register int right = pos + size - 1;
    register int left = pos;
    register double av = (in.at(pos) + in.at(pos+size-1)) / 2.0;

    while(left &lt; right)
    {
        if (in.at(left) &gt; av)
        {
            if (av &gt; in.at(right))
            {
                tmp = in.at(left);
                in.at(left) = in.at(right);
                in.at(right) = tmp;
                left++;
            }
            right--;
        }
        else
        {
            if (av &lt;= in.at(right)) right--;
            left++;
        }
    }
    if(left == right &amp;&amp; in.at(left) &lt;= av) left++;

    if((right = left-pos) &lt; 2)return;
    else vquicksort2(in, right, pos);
    if((right = size-left+pos) &lt; 2) return;
    else vquicksort2(in, right, left - pos);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1821702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821702</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 12 Dec 2009 20:07:37 GMT</pubDate></item></channel></rss>