<?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[Problematik Templates]]></title><description><![CDATA[<p>hallo,</p>
<p>also ich habe folgenden code.</p>
<p>test_template.cpp</p>
<pre><code class="language-cpp">#include &quot;includes.h&quot;
using namespace std;

template&lt;class T&gt;
void sortieren(vector&lt;T&gt;&amp; sort)
{
	vector&lt;T&gt; &amp;neusortieren = sort;

	for( T i = 1;i&lt;neusortieren.size();++i)
	{
		for( T j = 0; j&lt;i;++j)
		{
			if(neusortieren[i] = neusortieren[j])
			{
				T temp = neusortieren[i];
				neusortieren[i] = neusortieren[j];
				neusortieren[i] = temp;
			}
		}
	}

	for(T i= 0 ;i&lt;sort.size();++i)
	{
		cout&lt;&lt;neusortieren[i]&lt;&lt;endl;
	}

}
</code></pre>
<p>die funktion sollte einen vector übergeben bekommen, von der main und dann eine sortierung nach bubble durchführen.</p>
<p>jetzt die main<br />
main.cpp</p>
<pre><code class="language-cpp">#include &quot;includes.h&quot;
#include&quot;test_template.cpp&quot;

using namespace std;

int main()
{
	vector&lt;int&gt; testvector;
	int abfrage;

	do
	{
		cin&gt;&gt;abfrage;
		testvector.push_back(abfrage);
	}while(abfrage != 99);

	sortieren(testvector);

	system(&quot;pause&quot;);

}
</code></pre>
<p>so und hier wird ein eingabe gemacht in einen vector welcher dann übergeben werden soll.</p>
<p>Folgendes problem, egal was ich eingebe, mir wird jedesmal nichts sortiert sondern immer nur die erste zahl angezeigt die ich eingegeben habe.natürlich wird diese zahl so oft angezeigt wie zahlen im vector sind.Ich kann mir das problem net erklären. weiß einer weiter, wäre über eure hilfe sehr dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194887/problematik-templates</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 17:03:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194887.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Oct 2007 18:37:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 18:37:05 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>also ich habe folgenden code.</p>
<p>test_template.cpp</p>
<pre><code class="language-cpp">#include &quot;includes.h&quot;
using namespace std;

template&lt;class T&gt;
void sortieren(vector&lt;T&gt;&amp; sort)
{
	vector&lt;T&gt; &amp;neusortieren = sort;

	for( T i = 1;i&lt;neusortieren.size();++i)
	{
		for( T j = 0; j&lt;i;++j)
		{
			if(neusortieren[i] = neusortieren[j])
			{
				T temp = neusortieren[i];
				neusortieren[i] = neusortieren[j];
				neusortieren[i] = temp;
			}
		}
	}

	for(T i= 0 ;i&lt;sort.size();++i)
	{
		cout&lt;&lt;neusortieren[i]&lt;&lt;endl;
	}

}
</code></pre>
<p>die funktion sollte einen vector übergeben bekommen, von der main und dann eine sortierung nach bubble durchführen.</p>
<p>jetzt die main<br />
main.cpp</p>
<pre><code class="language-cpp">#include &quot;includes.h&quot;
#include&quot;test_template.cpp&quot;

using namespace std;

int main()
{
	vector&lt;int&gt; testvector;
	int abfrage;

	do
	{
		cin&gt;&gt;abfrage;
		testvector.push_back(abfrage);
	}while(abfrage != 99);

	sortieren(testvector);

	system(&quot;pause&quot;);

}
</code></pre>
<p>so und hier wird ein eingabe gemacht in einen vector welcher dann übergeben werden soll.</p>
<p>Folgendes problem, egal was ich eingebe, mir wird jedesmal nichts sortiert sondern immer nur die erste zahl angezeigt die ich eingegeben habe.natürlich wird diese zahl so oft angezeigt wie zahlen im vector sind.Ich kann mir das problem net erklären. weiß einer weiter, wäre über eure hilfe sehr dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383132</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 11 Oct 2007 18:37:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 18:39:34 GMT]]></title><description><![CDATA[<p>Compilerwarnungen einschalten und beachten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383133</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 11 Oct 2007 18:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 18:45:42 GMT]]></title><description><![CDATA[<p>ahh ok...leider kann ich mit der warnung ent so viel anfangen, vielei ihr besser ich poste sie einfach mal hier</p>
<pre><code>test_template.cpp(10) : warning C4018: '&lt;': Konflikt zwischen 'signed' und 'unsigned'
</code></pre>
<pre><code>main.cpp(18): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void sortieren&lt;int&gt;(std::vector&lt;_Ty&gt; &amp;)&quot;.
</code></pre>
<pre><code>\test_template.cpp(23) : warning C4018: '&lt;': Konflikt zwischen 'signed' und 'unsigned'
</code></pre>
<p>hoffe ihr könnt mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383138</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 11 Oct 2007 18:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 18:49:11 GMT]]></title><description><![CDATA[<p>verwende vector&lt;T&gt;::iterator zum iterieren und nicht sowas wie &quot;T i&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383142</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 11 Oct 2007 18:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 18:52:16 GMT]]></title><description><![CDATA[<p>meinst du damit, das direkt mit in die shcleife zu schreiben? das vector&lt;T&gt;::iterator...oder vorher einen iter erstellen und dann einsetzen? sorry sind meine esten gehversuche mit Templates <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383143</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 11 Oct 2007 18:52:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 19:52:16 GMT]]></title><description><![CDATA[<p>und dein Fehler liegt darin das du eine Anweisung auf ihren Wahrheitswert prüfst ... nicht eine Bedingung:</p>
<pre><code class="language-cpp">if (neusortieren[i] = neusortieren[j])
</code></pre>
<p>... Da ist der Fehler <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>
<p>Aja und das mitm Ausgeben kann man per std::ostream_iterator nen ganzes bissel eleganter lösen:</p>
<pre><code class="language-cpp">std::copy(sort.begin(), sort.end(), std::ostream_iterator&lt;T&gt;(std::cout, &quot;\n&quot;));
</code></pre>
<p>...<br />
=&gt;</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

template &lt;typename T&gt;
void sort(std::vector&lt;T&gt;&amp; sort)
{
    for (std::size_t i = 1; i &lt; sort.size(); ++i)
        for (std::size_t j = 0; j &lt; i; ++j)
            if (sort.at(i) == sort.at(j))
                std::swap(sort.at(i), sort.at(j));
}

int main()
{
    std::cout &lt;&lt; &quot;Geben Sie die Zahlen, durch ein Leerzeichen getrennt, ein: &quot; &lt;&lt; std::flush;
    std::vector&lt;int&gt; dest;
    std::copy(std::istream_iterator&lt;int&gt;(std::cin), std::istream_iterator&lt;int&gt;(),
     std::back_inserter(dest)); 
    sort&lt;int&gt;(dest);
    std::cout &lt;&lt; &quot;Sortiert: &quot; &lt;&lt; std::endl;
    std::copy(dest.begin(), dest.end(), std::ostream_iterator&lt;T&gt;(std::cout, &quot;\n&quot;));
}
</code></pre>
<p><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>
<p><strong>Bearbeitung</strong><br />
Für thorkd und da es sich um einen std. Container handelt:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void sort(std::vector&lt;T&gt;&amp; sort)
{
    for (std::vector&lt;T&gt;::iterator it = sort.begin() + 1; it != sort.end(); ++it)
        for (std::vector&lt;T&gt;::iterator it_x = sort.begin(); it_x != sort.end(); ++it_x)
            if (*it == *it_x)
                std::swap(*it, *it_x);
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383199</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 11 Oct 2007 19:52:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 20:07:57 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p><strong>Bearbeitung</strong><br />
Für thorkd und da es sich um einen std. Container handelt:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void sort(std::vector&lt;T&gt;&amp; sort)
{
    for (std::vector&lt;T&gt;::iterator it = sort.begin() + 1; it != sort.end(); ++it)
        for (std::vector&lt;T&gt;::iterator it_x = sort.begin(); it_x != sort.end(); ++it_x)
            if (*it == *it_x)
                std::swap(*it, *it_x);
}
</code></pre>
<p>...</p>
</blockquote>
<p>Schau dir mal iter_swap an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383218</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Thu, 11 Oct 2007 20:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problematik Templates on Thu, 11 Oct 2007 21:33:52 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>meinst du damit, das direkt mit in die shcleife zu schreiben? das vector&lt;T&gt;::iterator...oder vorher einen iter erstellen und dann einsetzen? sorry sind meine esten gehversuche mit Templates <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>wie du den iterator verwendest ist eigentlich egal. man sollte sich nur davor hüten, templates zu schreiben, die jeglichen typ als parameter erlauben, dann aber annahmen darüber treffen, was fürn typ kommt.<br />
du gehst in deiner schleife z.b. davon aus, dass du einen primitiven typ wie int erhältst. dein template kann aber mit allem möglichen aufgerufen werden, z.b. einer klasse als template parameter. und da c++ indirekte initialisierung für bestimmte klassen nach der art &quot;Foo f = 3&quot; erlaubt, kann es zu so dermaßen kryptischen compilefehlern kommen, dass man sich bei umfangreichereren templates nen wolf sucht, bis man den fehler gefunden hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383260</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 11 Oct 2007 21:33:52 GMT</pubDate></item></channel></rss>