<?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[Fill vector with input from cin without loop]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>jeder kennt bestimmt die typische input loop:</p>
<pre><code>while (cin &gt;&gt; foo)
    bar.push_back(foo);
</code></pre>
<p>ich habe aber mal irgendwo gesehen, dass man das alles schneller machen kann, irgendwas mit Iteratoren, wenn ich mich recht erinnere.</p>
<p>Würde mich freuen, wenn jemand das nochmal schnell mir zeigen könnte. Finde es nämlich schöner das Ganze in 1 statt 3-4 zeilen zu machen</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329109/fill-vector-with-input-from-cin-without-loop</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 02:30:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329109.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Nov 2014 12:19:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:19:35 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>jeder kennt bestimmt die typische input loop:</p>
<pre><code>while (cin &gt;&gt; foo)
    bar.push_back(foo);
</code></pre>
<p>ich habe aber mal irgendwo gesehen, dass man das alles schneller machen kann, irgendwas mit Iteratoren, wenn ich mich recht erinnere.</p>
<p>Würde mich freuen, wenn jemand das nochmal schnell mir zeigen könnte. Finde es nämlich schöner das Ganze in 1 statt 3-4 zeilen zu machen</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426497</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:25:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">my_vector.insert(end(myvector), istream_iterator&lt;bla&gt;(cin), istream_iterator&lt;bla&gt;());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2426499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426499</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:25:54 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:27:58 GMT]]></title><description><![CDATA[<pre><code>// implying std::vector&lt;Foo&gt; vec; ...
std::copy(std::istream_iterator&lt;Foo&gt;(std::cin), std::istream_iterator&lt;Foo&gt;(), std::back_inserter(vec));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2426500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426500</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:31:50 GMT]]></title><description><![CDATA[<p>ach ja, vergiss meinen Code, die Variante mit std::back_inserter ist natürlich die richtige...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426501</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:35:26 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>ach ja, vergiss meinen Code, die Variante mit std::back_inserter ist natürlich die richtige...</p>
</blockquote>
<p>Ich find deine aber eleganter. Und die ist kürzer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426502</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:39:27 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>ach ja, vergiss meinen Code, die Variante mit std::back_inserter ist natürlich die richtige...</p>
</blockquote>
<p>Ich find deine aber eleganter. Und die ist kürzer.</p>
</blockquote>
<p>Hach, ich bin noch etwas...unausgeschlafen <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="🤡"
    /> ...dachte für einen Moment, dass bei mir der vector sich doch nicht passend vergrößern würde und man darum den back_inserter benötigt, tut er ja aber eh...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426503</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:43:02 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>ach ja, vergiss meinen Code, die Variante mit std::back_inserter ist natürlich die richtige...</p>
</blockquote>
<p>Ich find deine aber eleganter. Und die ist kürzer.</p>
</blockquote>
<pre><code>vec.insert(end(vec), istream_iterator&lt;Foo&gt;(cin), istream_iterator&lt;Foo&gt;());
copy(istream_iterator&lt;Foo&gt;(cin), istream_iterator&lt;Foo&gt;(), back_inserter(vec));

std::copy(std::istream_iterator&lt;Foo&gt;(std::cin), std::istream_iterator&lt;Foo&gt;(), std::back_inserter(vec));
vec.insert(std::end(vec), std::istream_iterator&lt;Foo&gt;(std::cin), std::istream_iterator&lt;Foo&gt;());
</code></pre>
<p>Nur geringfügig, und insert erweckt den Eindruck, dass man irgendwo innerhalb des Vector einfügen will, dementsprechend ist copy da was aussagekräftiger. Aber jeder wie er mag <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/2426504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426504</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:47:03 GMT]]></title><description><![CDATA[<p>Supi beide Lösungen funktionieren, danke.</p>
<p>Gibt es einen einfachen Trick, damit es ähnlich wie hier nur das Drücken der Enter taste bedarf, damit die Eingabe aufhört und nicht einen nicht-int, z.B. ';'.</p>
<pre><code>string str;
getline(cin, str);
stringstream stream(str);
int temp;
while (stream &gt;&gt; temp)
    vec.push_back(temp);
</code></pre>
<p>Wenn nicht, ist es auch kein großes Thema, ist trotzdem einfacher meiner Meinung nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426506</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 12:47:07 GMT]]></title><description><![CDATA[<p>Warum hat noch keiner die deutlich kürzere Variante gezeigt?</p>
<pre><code>vec.insert(vec.end(), istream_iterator&lt;Foo&gt;(cin), {});
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2426508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426508</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 08 Nov 2014 12:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 13:01:59 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Warum hat noch keiner die deutlich kürzere Variante gezeigt?</p>
<pre><code>vec.insert(vec.end(), istream_iterator&lt;Foo&gt;(cin), {});
</code></pre>
</blockquote>
<p>oder noch kürzer</p>
<pre><code>vec.insert(end(vec), istream_iterator&lt;bla&gt;(cin), {});
</code></pre>
<p>:p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426510</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 08 Nov 2014 13:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 13:21:12 GMT]]></title><description><![CDATA[<blockquote>
<p>Gibt es einen einfachen Trick, damit es ähnlich wie hier nur das Drücken der Enter taste bedarf, damit die Eingabe aufhört und nicht einen nicht-int, z.B. ';'.</p>
</blockquote>
<p>Es gibt einen sexy Trick.</p>
<pre><code>class newline_sep : public std::ctype&lt;char&gt;
{
	mask const* create_table()
	{
		static mask table[table_size];
		if (table[std::size_t(' ')] == 0)
		{
			std::copy_n( classic_table(), table_size, table );
			table[std::size_t('\n')] &amp;= ~space;
		}

		return table;
	}

public:

	newline_sep(std::size_t refs = 0) : ctype(create_table(), false, refs) {}
};
</code></pre>
<p>Dann in <code>cin</code> imbuen:</p>
<pre><code>cin.imbue( locale(cin.getloc(), new newline_sep) );
</code></pre>
<p>Und voila:</p>
<pre><code>vector&lt;int&gt; v( istream_iterator&lt;int&gt;(cin), {} );

	for (auto i : v)
		std::cout &lt;&lt; i &lt;&lt; &quot;, &quot;;
</code></pre>
<p>Sollte bei Zeilengesteuerten Konsolen beim drücken der Enter-Taste abbrechen.</p>
<p>Ich kann mich im Übrigen erinnern diese MEthode in irgendeinem cppreference Beispiel gesehen zu haben. Kann das jemand rauskramen?<br />
Edit: Ich bin wohl blind, das ist ja das Beispiel von<a href="http://en.cppreference.com/w/cpp/locale/ctype_char" rel="nofollow"> <code>ctype&lt;char&gt;</code> selbst</a>. Hab' den Code angepasst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426513</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 08 Nov 2014 13:21:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 13:15:51 GMT]]></title><description><![CDATA[<p>wow... fragt sich, ob der comfort auch gut ist, wenn ich den Trick absolut nicht verstehe, oder ob es dann doch sinnvoller ist, einfach ein ';' etc. einzugeben <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/2426515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426515</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Sat, 08 Nov 2014 13:15:51 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 13:31:52 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>wow... fragt sich, ob der comfort auch gut ist, wenn ich den Trick absolut nicht verstehe, oder ob es dann doch sinnvoller ist, einfach ein ';' etc. einzugeben <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>Simulier EOF: Strg+Z (Win), Strg+D (Linux)<br />
Ist &quot;sauberer&quot; als Müll einzugeben und funktioniert auch bei Strings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426517</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 08 Nov 2014 13:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 14:00:16 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Warum hat noch keiner die deutlich kürzere Variante gezeigt?</p>
<pre><code>vec.insert(vec.end(), istream_iterator&lt;Foo&gt;(cin), {});
</code></pre>
</blockquote>
<p>Weil Visual Studio das noch nicht ausreichend gut unterstützt als dass ich es nutze und mich daran gewöhnt hab <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/2426520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426520</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 08 Nov 2014 14:00:16 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 14:59:26 GMT]]></title><description><![CDATA[<p>Gibts es überhaupt nen guten Grund nicht einfach die erste Variante zu nehmen (mit move)? <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/2426531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426531</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 08 Nov 2014 14:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fill vector with input from cin without loop on Sat, 08 Nov 2014 15:03:27 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Gibts es überhaupt nen guten Grund nicht einfach die erste Variante zu nehmen (mit move)? <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>
</blockquote>
<p>Das wäre zu kurz, nicht ausreichend kryptisch genug und man müsste &lt;iterator&gt; nicht includen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426532</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 08 Nov 2014 15:03:27 GMT</pubDate></item></channel></rss>