<?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[STD Vektor mit Array initialisieren]]></title><description><![CDATA[<p>Hallo.</p>
<p>Zu dieser Frage gibt es schon viele Diskussionen im Netz, aber keine Antwort stellt mich zufrieden. Ich möchte einen std::vector anlegen, der direkt auf einem gegeben Array arbeitet, ohne diesen nochmal zu kopieren. Leider schaffe ich das nicht. Es gibt die Methode vector&lt;T&gt;::assign, der ich Anfang und Ende eines Arrays übergeben kann, aber dann kopiert er ebenfalls.</p>
<p>Hier mal ein Minimalbeispiel:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
  typedef vector&lt;int&gt; Vector;

  int data[] = {1, 2, 3, 4, 5};

  Vector vec;
  vec.assign(data, data+5);

  data[3] = 10;

  cout &lt;&lt; &quot;Data: &quot;;
  for(Vector::const_iterator it = vec.begin(), it_end = vec.end();
      it != it_end; ++it)
    {
      cout &lt;&lt; *it &lt;&lt; &quot; &quot;;
    }
  cout &lt;&lt; endl;

  cout &lt;&lt; &quot;Address Array  : &quot; &lt;&lt; data &lt;&lt; endl;
  cout &lt;&lt; &quot;Address Vector : &quot; &lt;&lt; &amp;(vec[0]) &lt;&lt; endl;
}
</code></pre>
<p>Es kommt immer 1 2 3 4 5 raus, obwohl ich gern 1 2 3 10 5 hätte. Die Adressen sollen am Ende auch gleich sein.</p>
<p>Geht soetwas überhaupt?<br />
Ich habe mir schon überlegt was der Destruktor machen würde: und zwar das Feld deallokieren. Das wäre natürlich fatal, wenn der User das vorher schon selbst getan hat. Darum kann man natürlich darüber diskutieren, ob so eine Funktion gewollt ist.</p>
<p>Hat jemand eine Idee?</p>
<p>Danke schonmal.</p>
<p>Grüße<br />
Max</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/314177/std-vektor-mit-array-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 15:50:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/314177.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Feb 2013 17:42:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STD Vektor mit Array initialisieren on Fri, 22 Feb 2013 17:42:59 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Zu dieser Frage gibt es schon viele Diskussionen im Netz, aber keine Antwort stellt mich zufrieden. Ich möchte einen std::vector anlegen, der direkt auf einem gegeben Array arbeitet, ohne diesen nochmal zu kopieren. Leider schaffe ich das nicht. Es gibt die Methode vector&lt;T&gt;::assign, der ich Anfang und Ende eines Arrays übergeben kann, aber dann kopiert er ebenfalls.</p>
<p>Hier mal ein Minimalbeispiel:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
  typedef vector&lt;int&gt; Vector;

  int data[] = {1, 2, 3, 4, 5};

  Vector vec;
  vec.assign(data, data+5);

  data[3] = 10;

  cout &lt;&lt; &quot;Data: &quot;;
  for(Vector::const_iterator it = vec.begin(), it_end = vec.end();
      it != it_end; ++it)
    {
      cout &lt;&lt; *it &lt;&lt; &quot; &quot;;
    }
  cout &lt;&lt; endl;

  cout &lt;&lt; &quot;Address Array  : &quot; &lt;&lt; data &lt;&lt; endl;
  cout &lt;&lt; &quot;Address Vector : &quot; &lt;&lt; &amp;(vec[0]) &lt;&lt; endl;
}
</code></pre>
<p>Es kommt immer 1 2 3 4 5 raus, obwohl ich gern 1 2 3 10 5 hätte. Die Adressen sollen am Ende auch gleich sein.</p>
<p>Geht soetwas überhaupt?<br />
Ich habe mir schon überlegt was der Destruktor machen würde: und zwar das Feld deallokieren. Das wäre natürlich fatal, wenn der User das vorher schon selbst getan hat. Darum kann man natürlich darüber diskutieren, ob so eine Funktion gewollt ist.</p>
<p>Hat jemand eine Idee?</p>
<p>Danke schonmal.</p>
<p>Grüße<br />
Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2301122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2301122</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Fri, 22 Feb 2013 17:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to STD Vektor mit Array initialisieren on Fri, 22 Feb 2013 17:48:02 GMT]]></title><description><![CDATA[<p>std::vector macht immer eine Kopie der Daten, die du ihm gibst. Daran kannst du wohl nichts ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2301126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2301126</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 22 Feb 2013 17:48:02 GMT</pubDate></item><item><title><![CDATA[Reply to STD Vektor mit Array initialisieren on Fri, 22 Feb 2013 17:50:41 GMT]]></title><description><![CDATA[<p>Mal ne Gegenfrage: Wieso brauchst du das überhaupt? Haben wir hier etwa wieder ein XY-Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2301130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2301130</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 22 Feb 2013 17:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to STD Vektor mit Array initialisieren on Fri, 22 Feb 2013 17:58:08 GMT]]></title><description><![CDATA[<p>Ich dachte es wäre effizienter und an dem Feld ändert sich in meinem Programm sowieso nichts mehr.</p>
<p>Wozu ich das brauche:<br />
Ich habe 3 Felder die eine Matrix im Compressed Row Storage (CRS)-Format darstellen sollen. Die werden von einem Finite-Elemente-Paket (das ist quasi die Steifigkeitsmatrix zu meiner Differentialgleichung) berechnet. Jetzt nehme ich die MTL 4 (Matrix Template Library) her, um mit dieser Matrix weiter zu rechnen. MTL speichert diese 3 Felder allerdings in Form eines std::vector's.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2301133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2301133</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Fri, 22 Feb 2013 17:58:08 GMT</pubDate></item></channel></rss>