<?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[vector möglichst schnell füllen]]></title><description><![CDATA[<p>Wie ist die einfachste und/oder schnellste Art, einen vector zu füllen, wenn Inhalt und Länge schon absehbar sind?</p>
<p>Es kommt mir arg plump vor, n-mal push_back aufzurufen. Ich denke mal, da gibt's was besseres. Aber was?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204610/vector-möglichst-schnell-füllen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 16:27:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204610.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Feb 2008 12:30:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:30:25 GMT]]></title><description><![CDATA[<p>Wie ist die einfachste und/oder schnellste Art, einen vector zu füllen, wenn Inhalt und Länge schon absehbar sind?</p>
<p>Es kommt mir arg plump vor, n-mal push_back aufzurufen. Ich denke mal, da gibt's was besseres. Aber was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449693</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:35:15 GMT]]></title><description><![CDATA[<p>ja naklar du füllst es einfach in einer schleife und rufst so möglicherweise nur einmal push_back() auf. du müsstest mal etwas code zeigen um die problematik etwa besser zu verdeutlichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449696</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:35:15 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:45:48 GMT]]></title><description><![CDATA[<p>std::fill?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449702</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:48:08 GMT]]></title><description><![CDATA[<p>Und um die Länge festzulegen <code>resize</code> oder im Konstruktor eben die Anzahl festlegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449706</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:51:33 GMT]]></title><description><![CDATA[<p>Der Inhalt ist ja nicht immer der selbe. Demzufolge hat eine Schleife keinen Sinn.</p>
<p>fill müsste ich mir mal anschauen.</p>
<p>Ansonsten habe ich jetzt erstmal einfach mittels copy and paste auf insert umgestellt. Aber mit Iteratoren müsste ich mich da wohl nochmal ausführlicher beschäftigen. Die sind meiner Meinung nach einfach unsinnig.</p>
<p>Okay, um die Situation zu erklären, mein jetziger Code:</p>
<pre><code class="language-cpp">vector&lt;string&gt; AxisNames() {
	vector&lt;string&gt; axisNames;

	string names[] = {&quot;X_AXIS&quot;, &quot;Y_AXIS&quot;, &quot;Z_AXIS&quot;, &quot;NEG_X_AXIS&quot;, &quot;NEG_Y_AXIS&quot;, &quot;NEG_Z_AXIS&quot;};
	axisNames.insert(axisNames.begin(), names, names+6);

	return axisNames;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1449707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449707</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:51:33 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:55:08 GMT]]></title><description><![CDATA[<p>Den Konstruktor benutzen?</p>
<pre><code class="language-cpp">vector&lt;string&gt; AxisNames() {
    string names[] = {&quot;X_AXIS&quot;, &quot;Y_AXIS&quot;, &quot;Z_AXIS&quot;, &quot;NEG_X_AXIS&quot;, &quot;NEG_Y_AXIS&quot;, &quot;NEG_Z_AXIS&quot;};
    vector&lt;string&gt; axisNames(names, names+6);
    return axisNames;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1449713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449713</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:56:13 GMT]]></title><description><![CDATA[<p>Wenn du schon vorher ein Array oder anderen Container mit den zu fuellenden Werten hast, dann nimm einfach den range-Ctor von vector:</p>
<pre><code class="language-cpp">template &lt;class Iter&gt;
vector(Iter first, Iter last);
</code></pre>
<p>Wenns n-mal der selbe Wert sein soll gibts folgenden Ctor:</p>
<pre><code class="language-cpp">vector(size_type n, const T&amp; value = T());
</code></pre>
<p>(beide Konstruktoren haben noch die Uebergabe eines Allokators als optionales dritte Argument, aber das ist in dem Fall ja nicht von Interesse)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449714</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:56:13 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 12:58:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">vector&lt;string&gt; AxisNames() {
    string names[] = {&quot;X_AXIS&quot;, &quot;Y_AXIS&quot;, &quot;Z_AXIS&quot;, &quot;NEG_X_AXIS&quot;, &quot;NEG_Y_AXIS&quot;, &quot;NEG_Z_AXIS&quot;};
    return vector&lt;string&gt;( &amp;names[0], &amp;names[sizeof(names)/sizeof(names[0])] );
}
</code></pre>
<p>Ich weiß aber nicht, ob der vector sich vorher auf die richtige Größe bringt, oder auch nur push_back verwendet.</p>
<p>ups, spät <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449715</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 05 Feb 2008 12:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 13:02:47 GMT]]></title><description><![CDATA[<p>David Schneider schrieb:</p>
<blockquote>
<p>Der Inhalt ist ja nicht immer der selbe. Demzufolge hat eine Schleife keinen Sinn.</p>
<p>fill müsste ich mir mal anschauen.</p>
<p>Ansonsten habe ich jetzt erstmal einfach mittels copy and paste auf insert umgestellt. Aber mit Iteratoren müsste ich mich da wohl nochmal ausführlicher beschäftigen. Die sind meiner Meinung nach einfach unsinnig.</p>
<p>Okay, um die Situation zu erklären, mein jetziger Code:</p>
<pre><code class="language-cpp">vector&lt;string&gt; AxisNames() {
	vector&lt;string&gt; axisNames;

	string names[] = {&quot;X_AXIS&quot;, &quot;Y_AXIS&quot;, &quot;Z_AXIS&quot;, &quot;NEG_X_AXIS&quot;, &quot;NEG_Y_AXIS&quot;, &quot;NEG_Z_AXIS&quot;};
	axisNames.insert(axisNames.begin(), names, names+6);

	return axisNames;
}
</code></pre>
</blockquote>
<p>Das Einzige was IMO hier noch zu verbessern ist ist reserve() zu verwenden:</p>
<pre><code class="language-cpp">vector&lt;string&gt; AxisNames() {
	vector&lt;string&gt; axisNames;

	string names[] = {&quot;X_AXIS&quot;, &quot;Y_AXIS&quot;, &quot;Z_AXIS&quot;, &quot;NEG_X_AXIS&quot;, &quot;NEG_Y_AXIS&quot;, &quot;NEG_Z_AXIS&quot;};
	axisNames.reserve(6); // &lt;---
	axisNames.insert(axisNames.begin(), names, names+6);

	return axisNames;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1449718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449718</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 05 Feb 2008 13:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 13:06:18 GMT]]></title><description><![CDATA[<p>Wobei die Range-Konstruktoren und -Einfügeoperationen &quot;blöd&quot; wären, wenn sie sich nicht den Umstand zunutze machten, dass man Forward-Iteratoren durchzählen und bei Random-Access-Iteratoren die Länge sogar direkt bestimmen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449723</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 05 Feb 2008 13:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to vector möglichst schnell füllen on Tue, 05 Feb 2008 13:11:25 GMT]]></title><description><![CDATA[<p>Jo, OK, hast recht. Von daher ist der 2-Iterator-Konstruktor wahrscheinlich noch besser.<br />
Effektiv wird vermutlich beides inetwa gleich schnell laufen - zumindest bei einem std::vector<a href="std::string" rel="nofollow">std::string</a>, allerdings bei anderen Typen (char, int, ...) könnte der 2-Iterator-Konstruktor schon nen Stück schneller sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1449727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1449727</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 05 Feb 2008 13:11:25 GMT</pubDate></item></channel></rss>