<?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-Problem [SOLVED]]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte mir ein Template für die Ausgabe von Collections machen.</p>
<pre><code class="language-cpp">template&lt;class T&gt; void printList(std::ostream&amp; s, const std::vector&lt;T&gt;&amp; vec, const char* del){
  bool first = true;
  for (std::vector&lt;T&gt;::const_iterator it = vec.begin(); it != vec.end(); ++it) {
     if(!first)
       s &lt;&lt; del;
     else
       first = false;
     s &lt;&lt; *it;
  }
}
</code></pre>
<p>Mit std:vector funktioniert das auch ganz gut.<br />
Krieg ich das auch irgendwie hin, dass es für alle Klassen mit const_iterator<br />
funktioniert?</p>
<p>So geht es z. B. nicht:</p>
<pre><code class="language-cpp">template&lt;class cT &lt;class T&gt; &gt; void printList(std::ostream&amp; s, const cT&amp; vec, const char* del);

template&lt;class cT = std::vector, class T&gt; void printList(std::ostream&amp; s, const cT&lt;T&gt;&amp; vec, const char* del);
</code></pre>
<p>Gibt es ne Möglichkeit?</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180456/template-problem-solved</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 20:33:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180456.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 May 2007 00:58:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Problem [SOLVED] on Thu, 03 May 2007 06:33:02 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte mir ein Template für die Ausgabe von Collections machen.</p>
<pre><code class="language-cpp">template&lt;class T&gt; void printList(std::ostream&amp; s, const std::vector&lt;T&gt;&amp; vec, const char* del){
  bool first = true;
  for (std::vector&lt;T&gt;::const_iterator it = vec.begin(); it != vec.end(); ++it) {
     if(!first)
       s &lt;&lt; del;
     else
       first = false;
     s &lt;&lt; *it;
  }
}
</code></pre>
<p>Mit std:vector funktioniert das auch ganz gut.<br />
Krieg ich das auch irgendwie hin, dass es für alle Klassen mit const_iterator<br />
funktioniert?</p>
<p>So geht es z. B. nicht:</p>
<pre><code class="language-cpp">template&lt;class cT &lt;class T&gt; &gt; void printList(std::ostream&amp; s, const cT&amp; vec, const char* del);

template&lt;class cT = std::vector, class T&gt; void printList(std::ostream&amp; s, const cT&lt;T&gt;&amp; vec, const char* del);
</code></pre>
<p>Gibt es ne Möglichkeit?</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277898</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 May 2007 06:33:02 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem [SOLVED] on Thu, 03 May 2007 06:07:54 GMT]]></title><description><![CDATA[<p>Warum einfach, wenn's auch kompliziert geht?</p>
<pre><code class="language-cpp">template&lt;class CT&gt; void printList(std::ostream&amp; s, const CT&amp; vec, const char* del){
  bool first = true;
  for (typename CT::const_iterator it = vec.begin(); it != vec.end(); ++it) {
     if(!first)
       s &lt;&lt; del;
     else
       first = false;
     s &lt;&lt; *it;
  }
}
</code></pre>
<p>Das schluckt alle STL-artigen Containerklassen als Datenquelle. (sprich: alles, was einen const_iterator (OutIt) und die Methoden begin() und end() bereitstellt)</p>
<p>PS: den letzten Parameter würde ich als string übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277925</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 03 May 2007 06:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem [SOLVED] on Thu, 03 May 2007 06:31:43 GMT]]></title><description><![CDATA[<p>Oh man...</p>
<p>wie dumm...</p>
<p>Danke CStoll!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277934</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 May 2007 06:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem [SOLVED] on Thu, 03 May 2007 08:45:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich steh' ja auf den &quot;copy-Trick&quot;</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vec;
copy(vec.begin(), vec.end(), std::ostream_iterator&lt;int&gt;(cout, &quot; &quot;) );
</code></pre>
<p>Ich wüsste nicht, wie man das mit einem eigenen template noch verkürzen oder verallgemeinern könnte...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277974</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 03 May 2007 08:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem [SOLVED] on Thu, 03 May 2007 12:22:09 GMT]]></title><description><![CDATA[<p>Hey Simon2...</p>
<p>Der Copy-Trick ist wirklich cool <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278083</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 03 May 2007 12:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Problem [SOLVED] on Thu, 03 May 2007 13:01:17 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Hey Simon2...</p>
<p>Der Copy-Trick ist wirklich cool <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>... ist auch nicht von mir. <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278110</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 03 May 2007 13:01:17 GMT</pubDate></item></channel></rss>