<?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[Typ von Container-Element bestimmen.]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>um die Kapazität eines Vectors auf die tatsächliche Elementanzahl zu trimmen gehe ich momentan folgendermassen vor (Anregung aus &quot;Effective STL&quot;):</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; v;
v.reserve(100);
v.push_back(4);
//... etc. etc. -- verwendete Zahlen für reserver und push_back sind nur beispielhaft
std::vector&lt;int&gt;(v).swap(v);
// v ist nun getrimmt
</code></pre>
<p>Also einfach ein temporäres Objekt erstellen und dann eben den Inhalt swappen.</p>
<p>Falls ich allerdings den Typ der Container-Elemente nicht weiss, dacht ich mir könnte folgendes funktionieren:</p>
<pre><code class="language-cpp">//... 
decltype(v)(v).swap(v); // (1) funktioniert nicht
std::vector&lt;decltype(v[0])&gt;(v).swap(v) // geht natürlich auch nicht, da decltype(v[0]) natürlich std::vector&lt;int&gt;::reference ist, welches ein typedef für int&amp; ist
</code></pre>
<p>Wie kann ich nun also an den Typ der Elemente gelangen? Ich könnte mir natürlich eine template-Funktion schreiben, allerdings muss das doch auch ohne zusätzliche Funktion funktionieren oder?</p>
<p>Fehlermeldung bei (1):</p>
<pre><code>1&gt;f:\win7-daten\visual studio 2010\projects\crap\crap\main.cpp(29): error C2143: Syntaxfehler: Es fehlt ';' vor '.'
1&gt;f:\win7-daten\visual studio 2010\projects\crap\crap\main.cpp(29): error C2086: 'std::vector&lt;_Ty&gt; v1': Neudefinition
1&gt;          with
1&gt;          [
1&gt;              _Ty=int
1&gt;          ]
1&gt;          f:\win7-daten\visual studio 2010\projects\crap\crap\main.cpp(21): Siehe Deklaration von 'v1'
1&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/290864/typ-von-container-element-bestimmen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 01:31:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290864.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Aug 2011 19:20:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:20:05 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>um die Kapazität eines Vectors auf die tatsächliche Elementanzahl zu trimmen gehe ich momentan folgendermassen vor (Anregung aus &quot;Effective STL&quot;):</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; v;
v.reserve(100);
v.push_back(4);
//... etc. etc. -- verwendete Zahlen für reserver und push_back sind nur beispielhaft
std::vector&lt;int&gt;(v).swap(v);
// v ist nun getrimmt
</code></pre>
<p>Also einfach ein temporäres Objekt erstellen und dann eben den Inhalt swappen.</p>
<p>Falls ich allerdings den Typ der Container-Elemente nicht weiss, dacht ich mir könnte folgendes funktionieren:</p>
<pre><code class="language-cpp">//... 
decltype(v)(v).swap(v); // (1) funktioniert nicht
std::vector&lt;decltype(v[0])&gt;(v).swap(v) // geht natürlich auch nicht, da decltype(v[0]) natürlich std::vector&lt;int&gt;::reference ist, welches ein typedef für int&amp; ist
</code></pre>
<p>Wie kann ich nun also an den Typ der Elemente gelangen? Ich könnte mir natürlich eine template-Funktion schreiben, allerdings muss das doch auch ohne zusätzliche Funktion funktionieren oder?</p>
<p>Fehlermeldung bei (1):</p>
<pre><code>1&gt;f:\win7-daten\visual studio 2010\projects\crap\crap\main.cpp(29): error C2143: Syntaxfehler: Es fehlt ';' vor '.'
1&gt;f:\win7-daten\visual studio 2010\projects\crap\crap\main.cpp(29): error C2086: 'std::vector&lt;_Ty&gt; v1': Neudefinition
1&gt;          with
1&gt;          [
1&gt;              _Ty=int
1&gt;          ]
1&gt;          f:\win7-daten\visual studio 2010\projects\crap\crap\main.cpp(21): Siehe Deklaration von 'v1'
1&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2101908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101908</guid><dc:creator><![CDATA[ernst34]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:24:24 GMT]]></title><description><![CDATA[<p>Da das Kurzmachen eh eine eigene Bedeutung ist, kann man sie auch mit einem Namen versehen, und dann kriegt man den Typen geschenklt.</p>
<pre><code class="language-cpp">temoplöate &lt;typename V&gt;
void machKurz(V&amp; v){
   v.swap(V());
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2101911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101911</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:27:27 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>temoplöate</p>
</blockquote>
<p>Arbeitest du schon mit dem Übernächsten C++ Standard mit Unicode Support - C++50? <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/2101912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101912</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:27:27 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:34:19 GMT]]></title><description><![CDATA[<p>Wenn du den Elementtyp des vector&lt;&gt;s wissen willst, wieso fragst du ihn dann nicht selber? (jeder Container bietet dafür ein typedef <code>value_type</code> ).</p>
<p>PS: Wenn du nicht weißt, was für einen Typ du da hast, wie hast du den originalen Vector überhaupt erstellt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101913</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:34:19 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:32:22 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>tpedef</p>
</blockquote>
<p>Haben wir den Mod-Rechtschreibefehler-Tag? <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/2101918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101918</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:32:22 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:34:58 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>tpedef</p>
</blockquote>
<p>Haben wir den Mod-Rechtschreibefehler-Tag? <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>Nein, mein Schleppi kam nur nicht mit meiner Tippgeschwindigkeit mit <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/2101920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101920</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:37:43 GMT]]></title><description><![CDATA[<p>Auf das typedef value_typ kann ich aber nur zugreifen, wenn ich die genaue Instanz des vector-templates kenne.<br />
Also beispielsweise</p>
<pre><code class="language-cpp">std::vector&lt;double&gt;::value_type blub;
</code></pre>
<p>Kenn ich diese nicht, komm ich da ja auch nicht ran - ausser eben wiederrum in einem Funktionstemplate.</p>
<p>Grundsätzlich weiss ich natürlich, welchen Typ meine Vektoren haben - allerdings interessiert mich eben, ob es ausser durch eine weitere Templ.fkt. möglich ist für gegebene Containerobjekte (ohne den Template-Parameter bei der instanziierung der Klasse zu kennen) herrauszufinden, welchen Datentyp die Elemente haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101924</guid><dc:creator><![CDATA[ernst34]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:37:43 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:41:37 GMT]]></title><description><![CDATA[<p>Dich hindert nichts daran, V::value_type bzw typename V::value_type zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101927</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:55:06 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Dich hindert nichts daran, V::value_type bzw typename V::value_type zu schreiben.</p>
</blockquote>
<p>Hier ist das <code>typename</code> doch nicht notwendig, da es kein verdeckter anhängiger Name (Scottie) ist, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101932</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 19:51:29 GMT]]></title><description><![CDATA[<p>Stimmt. Ich bin wohl schon etwas müde <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/2101937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101937</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 19:51:29 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 20:10:56 GMT]]></title><description><![CDATA[<p>Wie schon mehrfach erwähnt ist mir bewusst und klar, wie ich dies durch eine zusätzliches Funktions-Template bewerkstellige.</p>
<p>Aber ich schrieb ja:</p>
<blockquote>
<p>...allerdings interessiert mich eben, ob es ausser durch eine weitere Templ.fkt. möglich ist für gegebene Containerobjekte...</p>
</blockquote>
<p>Also nichts mit V::value_type</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2101950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2101950</guid><dc:creator><![CDATA[ernst34]]></dc:creator><pubDate>Thu, 04 Aug 2011 20:10:56 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 21:48:17 GMT]]></title><description><![CDATA[<p>Also schön wird's fürchte ich nicht, und ich bin auch nicht sicher ob's wirklich standardkonform ist:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;utility&gt;

int main()
{
    std::vector&lt;int&gt; v;

    // 1
    typedef decltype(v) VT;
    VT(v).swap(v);

    // 2
    typename std::identity&lt;decltype(v)&gt;::type(v).swap(v);

    // 3 (sinnlos, da noch viel umständlicher als (2))
    std::vector&lt;typename std::identity&lt;decltype(v)&gt;::type::value_type&gt;(v).swap(v);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2102038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102038</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Aug 2011 21:48:17 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 21:50:18 GMT]]></title><description><![CDATA[<p>Ich steig hier gerade total aus. Wo liegt das Problem? Was habt ihr vor? Ich kapier den Aufwand nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102039</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 21:50:18 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 21:54:07 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23275">@314159265358979</a></p>
<p>Auftrag:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
// weitere includes die du brauchst

int main()
{
    std::vector&lt;int&gt; v;

    // Schreibe hier code hin, der ein neues Objekt vom Typ von &quot;v&quot; erzeugt,
    // mit dem Inhalt von &quot;v&quot; initialisiert, und ruft dann &quot;neuesObjekt.swap(v)&quot; auf.
    // Und zwar ohne Hilfsfunktionen bzw. Templates, und ohne dass der Typ des Vektors (hier int) eine Rolle spielt.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2102041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102041</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Aug 2011 21:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 22:47:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;algorithm&gt;

int main()
{
    std::vector&lt;int&gt; v;

    int size = sizeof(v.front());

    std::vector&lt;char&gt; v2(reinterpret_cast&lt;char*&gt;(&amp;v.front()), reinterpret_cast&lt;char*&gt;(&amp;v.back()) + size);
    v.clear();
    v.resize(v2.size() / size);

    std::copy(v2.begin(), v2.end(), reinterpret_cast&lt;char*&gt;(&amp;v.front()));
}
</code></pre>
<p>Aus dem Kopf heraus, ungetestet :p</p>
<p>Edit: Ganz vergessen, dass clear() ja keinen Speicher frei gibt. Dann weiß ich's auch nicht, ohne decltype zu verwenden. (Edit2: Bzw ohne mich auf Internas der Implementierung zu verlassen.)</p>
<p>Edit #3:<br />
Hier nochmal eine Möglichkeit. Standardkonform ist's nicht, aber sollte eigentlich bei allen Implementierungen zumindest im Release-Mode hinhauen.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main()
{
    std::vector&lt;int&gt; v;

    assert(sizeof(v) == sizeof(std::vector&lt;char&gt;));
    std::vector&lt;char&gt;(reinterpret_cast&lt;char*&gt;(&amp;v.front()), reinterpret_cast&lt;char*&gt;(&amp;v.back()) + sizeof(v.front()).swap(reinterpret_cast&lt;std::vector&lt;char&gt;&amp;&gt;(v));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2102054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102054</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 22:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 23:27:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23275">@314159265358979</a>:<br />
OMFG. Das ist einer der dümmsten Scherze die du seit langem gemacht hast.</p>
<p>Und &quot;es sollte&quot; auch nicht &quot;eigentlich hinhauen&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102074</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Aug 2011 23:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 23:25:42 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23275">@314159265358979</a>:<br />
OMFG.</p>
</blockquote>
<p>Gerade als ich auf &quot;Zitieren&quot; klicken wollte, hast du editiert. Ich dachte, wir hätten einen std::vector&lt;int&gt;, nur dürfen wir nirgens int hinschreiben. Das ist natürlich was anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102075</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 23:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 23:29:03 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Und zwar ohne Hilfsfunktionen bzw. Templates, und ohne dass der Typ des Vektors (hier int) eine Rolle spielt.
</code></pre>
</blockquote>
<p>Ich hatte angenommen dass das klar genug ist. War es anscheinend nicht. Aber gut, jetzt weisst du was gemeint ist <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/2102076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102076</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Aug 2011 23:29:03 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Thu, 04 Aug 2011 23:34:44 GMT]]></title><description><![CDATA[<p>Beim zweiten mal lesen völlig klar. assert(PI.brain_state() != brain_state.TIRED); kabumm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102077</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 04 Aug 2011 23:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 18:38:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22268">@PI</a><br />
Dass deine Lösung ein Satz mit x war, ist dir vermutlich selber klar <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a><br />
Ich danke dir für die Lösungsvorschläge.<br />
Auf Lösung 1 hätte ich natürlich auch schnell selber kommen können, allerdings ist mir völlig unklar warum</p>
<pre><code class="language-cpp">typedef decltype(v) VT;
VT(v).swap(v);
</code></pre>
<p>funktioniert,</p>
<p>der compiler bei</p>
<pre><code class="language-cpp">decltype(v)(v).swap(v)
</code></pre>
<p>rummeckert. Wird vermutlich damit zu tun haben, wie Ausdrücke geparst werden.</p>
<p>Lösung 3 hat keinen Vorteil gegenüber Lösung 2, und an std::identity hab ich überhaupt garnicht mehr gedacht. Danke für den Tip.</p>
<p>Inwiefern hast du bedenken, dass Lösung 2 nicht standardkonform ist?</p>
<p>Besten Dank nochmals für eure Vorschläge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102424</guid><dc:creator><![CDATA[ernst34]]></dc:creator><pubDate>Fri, 05 Aug 2011 18:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 18:43:38 GMT]]></title><description><![CDATA[<p>Zählt &quot;auto&quot; eigentlich auch als Lösung?</p>
<pre><code class="language-cpp">{
  auto tmp=v;
  tmp.swap(v);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2102428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102428</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Aug 2011 18:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 18:50:38 GMT]]></title><description><![CDATA[<p>ernst34 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22268">@PI</a><br />
Dass deine Lösung ein Satz mit x war, ist dir vermutlich selber klar <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>
</blockquote>
<p>Den hab ich jetzt nicht verstanden. Bitte nochmal für ganz doofe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102432</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 05 Aug 2011 18:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 18:50:47 GMT]]></title><description><![CDATA[<p>Ja zählt natürlich auch. Warum kompliziert, wenns auch einfach geht? <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 />
Argh - manchmal denkt man einfach viel zu kompliziert wenn man auf das Offensichtlichste nicht gleich zuerst kommt.</p>
<p>Bleibt aber noch die Frage bezüglich der Bedenken zur Standardkonformität von hustbaers Lösungen 1 und 2, und warum Lösung 1 im Gegensatz zur gleichen Lösung ohne typedef funktioniert.<br />
(Lsg. 2 zählt eigentlich auch nicht wirklich, da ja wieder eine zusätzliche Templ.fkt. verwendet wird, aber das mag für die Frage egal sein).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102433</guid><dc:creator><![CDATA[ernst34]]></dc:creator><pubDate>Fri, 05 Aug 2011 18:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 19:00:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22268">@pi</a>:</p>
<p>Satz mit x: War wohl nix.</p>
<p>Deine Lösung mit dem reinterpret-gecaste und copy etc. ist höflich gesagt für die Katz <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>Ausserdem garantiert mir das resize nicht, dass mein vector entsprechend getrimmt wird. Falls es so wäre, warum nicht einfach v.resize(v.size())?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102438</guid><dc:creator><![CDATA[ernst34]]></dc:creator><pubDate>Fri, 05 Aug 2011 19:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 19:07:26 GMT]]></title><description><![CDATA[<p>ernst34 schrieb:</p>
<blockquote>
<p>Deine Lösung mit dem reinterpret-gecaste und copy etc. ist höflich gesagt für die Katz <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>Nein. Ich wollte bewusst keine Features wie auto und decltype verwenden. Dass das nur mit PODs funktioniert, ist ein unschöner Nebeneffekt. Dein Beispiel ist ja auch total schwachsinnig und realitätsfremd, also dürfen die Lösungen das ja wohl auch sein. So gesehen ist meine Lösung die korrekteste von allen.</p>
<p>ernst34 schrieb:</p>
<blockquote>
<p>Ausserdem garantiert mir das resize nicht, dass mein vector entsprechend getrimmt wird. Falls es so wäre, warum nicht einfach v.resize(v.size())?</p>
</blockquote>
<p>Du hast meine letzte Lösung nicht gesehen, oder? Lies nochmal nach. Von wäre hab ich nichts. Siehe .clear().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102443</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 05 Aug 2011 19:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Typ von Container-Element bestimmen. on Fri, 05 Aug 2011 19:17:25 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>ernst34 schrieb:</p>
<blockquote>
<p>Ausserdem garantiert mir das resize nicht, dass mein vector entsprechend getrimmt wird. Falls es so wäre, warum nicht einfach v.resize(v.size())?</p>
</blockquote>
<p>Du hast meine letzte Lösung nicht gesehen, oder? Lies nochmal nach. Von wäre hab ich nichts. Siehe .clear().</p>
</blockquote>
<p>Auch clear() gibt die Kapazität des vector&lt;&gt; nicht frei - das ist ein gieriger Geselle, der nichts gerne herausrückt, was er einmal in den Händen hält.</p>
<p>Und bei der Lösung mittels reinterpret_cast&lt;&gt; kannst du dich auch ziemlich in die Nesseln setzen (sogar bei PODs), indem du dem Vektor seine Datengröße-Verwaltung kaputtschießt.</p>
<p>PS Randfrage <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5577">@ernst</a>: Hat es einen tieferen Sinn, warum du das Problem unbedingt ohne Hilfsfunktionen lösen willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102448</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Aug 2011 19:17:25 GMT</pubDate></item></channel></rss>