<?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[Codewartung: Rohes C-Style-Array zu std::vector]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>Wir müssen gerade eine aaaalten Code überholen (und um Funktionen erweitern) und wollen hierbei alte rohe C-Style-Arrays wie</p>
<pre><code>int iArray[1000];
</code></pre>
<p>einfach auskommentieren und ersetzen durch:</p>
<pre><code>//int iArray[1000];
std::vector&lt;int&gt; iArray(1000);
</code></pre>
<p>ohne andere Codestellen zu verändern. Da ja ohnehin nur der []-Operator verwendet wurde, sollte das doch keine Problem sein, oder <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>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312407/codewartung-rohes-c-style-array-zu-std-vector</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 20:35:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312407.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Jan 2013 03:26:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 03:26:16 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>Wir müssen gerade eine aaaalten Code überholen (und um Funktionen erweitern) und wollen hierbei alte rohe C-Style-Arrays wie</p>
<pre><code>int iArray[1000];
</code></pre>
<p>einfach auskommentieren und ersetzen durch:</p>
<pre><code>//int iArray[1000];
std::vector&lt;int&gt; iArray(1000);
</code></pre>
<p>ohne andere Codestellen zu verändern. Da ja ohnehin nur der []-Operator verwendet wurde, sollte das doch keine Problem sein, oder <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>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2285984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2285984</guid><dc:creator><![CDATA[class_1974]]></dc:creator><pubDate>Fri, 04 Jan 2013 03:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 07:15:59 GMT]]></title><description><![CDATA[<p>Wäre es zu viel Aufwand, die Grösse dynamisch anzupassen? Sonst bringt der <code>std::vector</code> nämlich nicht allzu viel.</p>
<p>Wenn das nicht drin liegt, könntest du auch statt <code>T array[N]</code> ein <code>std::array&lt;T, N&gt;</code> nehmen, sofern der Compiler das unterstützt. Da ist die Semantik genau gleich wie bei Arrays, aber du hast nützliche Funktionen wie <code>size()</code> und im Debug-Modus Index-Checks.</p>
<p>Wo du aufpassen musst, ist bei impliziten Konvertierungen zu Zeigern. Dieser Code wird mit STL-Containern nicht mehr funktionieren.</p>
<pre><code>void function(int* array, int size);

int x[1000];
function(x, 1000);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2285996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2285996</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 04 Jan 2013 07:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 07:39:29 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wo du aufpassen musst, ist bei impliziten Konvertierungen zu Zeigern. Dieser Code wird mit STL-Containern nicht mehr funktionieren.</p>
<pre><code>void function(int* array, int size);

int x[1000];
function(x, 1000);
</code></pre>
</blockquote>
<p>nicht mehr im allgemeinen, in einzelfällen schon.</p>
<p>gerade vector garantiert ja, dass die elemente hintereinander im speicher liegen:</p>
<pre><code>void function(int* array, int size);

int x[1000];
function(x, 1000);

std::vector&lt;int&gt; v(1000);
function(&amp;v[0], v.size());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2286000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286000</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 04 Jan 2013 07:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 09:28:08 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>nicht mehr im allgemeinen, in einzelfällen schon.</p>
</blockquote>
<p>Nein. Es existiert keine implizite Konvertierung von <code>std::vector&lt;T&gt;</code> nach <code>T*</code> .</p>
<p>Klar kann man sich einen Zeiger auf das erste Element holen, aber dazu muss eben Code angepasst werden. Daher &quot;Dieser Code wird mit STL-Containern nicht mehr funktionieren&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286037</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 04 Jan 2013 09:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 09:49:21 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein. Es existiert keine implizite Konvertierung von std::vector&lt;T&gt; nach T*.</p>
</blockquote>
<p>Ja, er muss vector::data() aufrufen.</p>
<blockquote>
<p>ohne andere Codestellen zu verändern.</p>
</blockquote>
<p>Nein, das geht nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286043</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 04 Jan 2013 09:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 09:35:43 GMT]]></title><description><![CDATA[<p>ja ok, nexus, da hast Recht.<br />
Da hab was falsch verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286047</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 04 Jan 2013 09:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 14:10:19 GMT]]></title><description><![CDATA[<p>Ok, danke euch schon mal für die Hinweise. Ich sehe schon, da ist mehr Arbeit nötig als gedacht (aber es hält sich noch in Grenzen) - besonders auf die implizite Konvertierung von Zeigern müssen wir hier wohl unser Augenmerk legen müssen. Wir werden entweder jetzt das Array dynamisch machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> oder eben den Code etwas mehr erneuern als uns lieb ist <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>Vielen Dank nochmals</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286180</guid><dc:creator><![CDATA[class_1974]]></dc:creator><pubDate>Fri, 04 Jan 2013 14:10:19 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Fri, 04 Jan 2013 14:53:48 GMT]]></title><description><![CDATA[<p>Einfach nur die Arrays zu ersetzen bringt überhaupt nichts. Im besten Fall hat man das gleiche mit zusätzlichen Array-bound-checks, wo aber die Exceptions nicht abgefangen werden.<br />
Man muss schon die verbesserte Funktionalität nutzen und Funktionen, wie z.B.</p>
<pre><code>void array_push(int* array, int* size, int value);
</code></pre>
<p>durch entsprechende Methoden ersetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286216</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Fri, 04 Jan 2013 14:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Mon, 07 Jan 2013 20:08:25 GMT]]></title><description><![CDATA[<p>Ich push das ganze hier mal, weil ich gerade auch so etwas in der Art mache.<br />
Nachdem ich in mühseliger Arbeit alle Deklarationen (ist das der Plural?) ersetzt habe, musste ich feststellen, dass folgender Code nicht geht:</p>
<pre><code>std::array&lt;int, 10&gt; arr = { 1, 2,... };
</code></pre>
<p>Warum gibt es für std::array keine Konstruktoren?<br />
Ich mein, dass ist ja schön echt wie in C, aber nerven tut es trotzdem.<br />
Warum fehlen die? Oder bin ich einfach nur zu blöd und die Referenz nicht richtig?<br />
lg<br />
Nathan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287363</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 07 Jan 2013 20:08:25 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Mon, 07 Jan 2013 20:12:25 GMT]]></title><description><![CDATA[<p>Hast du das mal ausprobiert? array hat keine Konstruktoren, weil's als Aggregat-Typ keine braucht. <a href="https://ideone.com/viD5mr" rel="nofollow">https://ideone.com/viD5mr</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287365</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 07 Jan 2013 20:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Mon, 07 Jan 2013 20:17:12 GMT]]></title><description><![CDATA[<p>Nanu? <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="😮"
    /> Da habe ich ja komplett was übersehen...<br />
OK, irgendwas habe ich falsch gemacht.<br />
Naja, mittlerweile habe ich ein Problem hier, wo ich einen Vektor durch ein Array ersetzt habe:</p>
<pre><code>void func(std::array&lt;int, 2&gt; object);
//...
func({2, 3}); // geht nicht
</code></pre>
<p>Mit Vektoren klappts wunderbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287369</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 07 Jan 2013 20:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Codewartung: Rohes C-Style-Array zu std::vector on Mon, 07 Jan 2013 21:18:21 GMT]]></title><description><![CDATA[<p>In dem Fall ist das keine Aggregat-Initialisierung, wie wir sie aus C kennen, sondern das C++11-Feature Initializer Lists. Da <code>std::array</code> keine Konstruktoren hat, kann es auch nicht von einer <code>std::initializer_list</code> konstruiert werden.</p>
<p>Ist eine etwas spezielle Entscheidung des Standardkommitees. Liegt wahrscheinlich daran, dass es <code>boost::array</code> und <code>std::tr1::array</code> schon Jahre vor C++11 gegeben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287388</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Jan 2013 21:18:21 GMT</pubDate></item></channel></rss>