<?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[Template Funktionen]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>wie kann ich eine template-Funktion schreiben die einen std::vector und eine std::list jeweils vom generischen Typ T akzeptiert?</p>
<p>Pseudocode:</p>
<pre><code>template &lt;class T,class U&gt; 
void display(U&lt;T&gt;&amp; container)
</code></pre>
<p>Mir wurde ein Tipp gegeben zu</p>
<blockquote>
<p>std::allocator&lt;T&gt;</p>
</blockquote>
<p>. Damit kann ich aber nichts anfangen.</p>
<p>Die Funktion soll einfach nur die Inhalte des Vektors oder der Liste ausgeben(cout oder printf)</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311037/template-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:33:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311037.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Nov 2012 13:29:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 13:29:33 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>wie kann ich eine template-Funktion schreiben die einen std::vector und eine std::list jeweils vom generischen Typ T akzeptiert?</p>
<p>Pseudocode:</p>
<pre><code>template &lt;class T,class U&gt; 
void display(U&lt;T&gt;&amp; container)
</code></pre>
<p>Mir wurde ein Tipp gegeben zu</p>
<blockquote>
<p>std::allocator&lt;T&gt;</p>
</blockquote>
<p>. Damit kann ich aber nichts anfangen.</p>
<p>Die Funktion soll einfach nur die Inhalte des Vektors oder der Liste ausgeben(cout oder printf)</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274479</guid><dc:creator><![CDATA[VRComputing]]></dc:creator><pubDate>Sun, 25 Nov 2012 13:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 13:43:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;typename Container&gt;
std::ostream&amp; print(std::ostream&amp; out, const Container&amp; c)
{
  for (auto&amp; x : c)
    out &lt;&lt; c;
  return out;
}

print(std::cout, container);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2274485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274485</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 25 Nov 2012 13:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 13:44:18 GMT]]></title><description><![CDATA[<p>Holzweg. Besonders das mit dem allocater, was 1. eine unnötig vage Formulierung dessen ist, was zu tun ist und 2. sowieso für ganz was anderes da ist, vermutlich hast du ungeschickt gefragt.</p>
<p>Mach einfach so:</p>
<pre><code>template &lt;typename Iterator&gt; void foo(Iterator begin, Iterator end);
</code></pre>
<p>Dann funktioniert der Code mit ALLEM!</p>
<p>Wenn es unbedingt zu deiner Vorgabe passen muss, dann:</p>
<pre><code>template &lt;class T&gt; void display(const T&amp; container)
</code></pre>
<p>edit: Wieder zu langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274486</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 25 Nov 2012 13:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 13:45:16 GMT]]></title><description><![CDATA[<p>VRComputing schrieb:</p>
<blockquote>
<p>template-Funktion</p>
</blockquote>
<p>Funktionstemplate.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274487</guid><dc:creator><![CDATA[templatefunktion]]></dc:creator><pubDate>Sun, 25 Nov 2012 13:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 14:24:53 GMT]]></title><description><![CDATA[<p>Danke erst mal, hat funktioniert.</p>
<p>Neue Aufgabe:</p>
<pre><code>template &lt;class T&gt; 
void read(std::vector&lt;T&gt;&amp; vec,std::string&amp; filename)
{
  ifstream file(filename.c_str(), ifstream::in);
  T data;
  while (file&gt;&gt;data)
    vec.push_back(data);
  file.close();
}
</code></pre>
<p>Diese Funktion soll aus einer Datei einlesen. Die Datei hat Zeilen mit einem Wort oder einer Kommazahl.</p>
<pre><code>std::vector&lt;T&gt;&amp; vec
</code></pre>
<p>soll eine Liste&lt;T&gt; oder einen Vektor&lt;T&gt; übernehmen können.</p>
<p>Wie muss ich das nun machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274495</guid><dc:creator><![CDATA[VRComputing]]></dc:creator><pubDate>Sun, 25 Nov 2012 14:24:53 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 14:29:00 GMT]]></title><description><![CDATA[<p>Passe SeppJ's zweites Beispiel deiner Funktion an. Alternativ kannst du Output-Iteratoren nehmen, dazu müsstest du dich einlesen.</p>
<p>&lt; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> &gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274497</guid><dc:creator><![CDATA[glühbirne]]></dc:creator><pubDate>Sun, 25 Nov 2012 14:29:00 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 14:55:54 GMT]]></title><description><![CDATA[<p>Ich versteh's nicht. Kann mir bitte jemand eine Lösung geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274502</guid><dc:creator><![CDATA[VRComputing]]></dc:creator><pubDate>Sun, 25 Nov 2012 14:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 15:00:29 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/200753" rel="nofollow">http://www.c-plusplus.net/forum/200753</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274506</guid><dc:creator><![CDATA[komplettlösung]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:00:29 GMT</pubDate></item><item><title><![CDATA[Reply to Template Funktionen on Sun, 25 Nov 2012 15:04:23 GMT]]></title><description><![CDATA[<p>Obligatorischer Hinweis:</p>
<p>VRComputing schrieb:</p>
<blockquote>
<p>Diese Funktion soll aus einer Datei einlesen.</p>
</blockquote>
<p>Diese <strong>Funktionsvorlage</strong> soll aus einer Datei einlesen.</p>
<p>Ansonsten:</p>
<pre><code class="language-cpp">template&lt;typename Container&gt;
void read(Container &amp;cont, std::string const &amp;filename)
{
  typename Container::value_type data; // &lt;--
}
</code></pre>
<p>Den Rest kannst du hoffentlich selbst. Allerdings wäre die Iteratorvariante in der Tat eleganter, weil allgemeiner -- wenn du die Daten aus der Datei beispielsweise gleich in ein Socket stopfen willst oder was auch immer. Du brauchst hier ja auch nur einen OutputIterator:</p>
<pre><code class="language-cpp">template&lt;typename iterator_t&gt;
void transfer_file(std::string const &amp;filename, iterator_t dest) {
  typename std::iterator_traits&lt;iterator_t&gt;::value_type data;
}
</code></pre>
<p>Und dann statt</p>
<pre><code class="language-cpp">read(container, &quot;foo.txt&quot;);
</code></pre>
<p>halt</p>
<pre><code class="language-cpp">transfer_file(std::back_inserter(container), &quot;foo.txt&quot;);
</code></pre>
<p>...bzw. irgendeinen anderen OutputIterator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274509</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 25 Nov 2012 15:04:23 GMT</pubDate></item></channel></rss>