<?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[Funktoren und unary_function]]></title><description><![CDATA[<p>Hey Leute</p>
<p>Hab da ein kleines Problem mit Funktoren und unary_function&lt;&gt;. Ich möchte lediglich, dass jeder Eintrag im vector mit 10 dividiert wird. Hierzu folgenden Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;
using namespace std;

struct divide10:public std::unary_function&lt;int,float&gt;{
	float operator()(const int j) const { return j/10;	}
};

int main(){
	typedef ostream_iterator&lt;int&gt; osIt;
	vector&lt;int&gt; v1,v2;
	v1 += 12,23,34,45,56,67,78,89,90;
	v2 += 1,1,1,1,1,1,1,1,1;
	transform(v1.begin(),v1.end(),osIt(cout,&quot;, &quot;),divide10());

	return 0;
}
</code></pre>
<p>Leider meckert der Compiler 'instantiated from here' beim Aufruf von transform().<br />
Leider komme ich auch mit den Büchern hier nicht weiter.<br />
Kann mir jemand schnell einen Tipp geben?</p>
<p>Danke im Voraus!<br />
mfg<br />
rox</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158459/funktoren-und-unary_function</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 20:58:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158459.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Sep 2006 15:45:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 15:45:41 GMT]]></title><description><![CDATA[<p>Hey Leute</p>
<p>Hab da ein kleines Problem mit Funktoren und unary_function&lt;&gt;. Ich möchte lediglich, dass jeder Eintrag im vector mit 10 dividiert wird. Hierzu folgenden Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;
using namespace std;

struct divide10:public std::unary_function&lt;int,float&gt;{
	float operator()(const int j) const { return j/10;	}
};

int main(){
	typedef ostream_iterator&lt;int&gt; osIt;
	vector&lt;int&gt; v1,v2;
	v1 += 12,23,34,45,56,67,78,89,90;
	v2 += 1,1,1,1,1,1,1,1,1;
	transform(v1.begin(),v1.end(),osIt(cout,&quot;, &quot;),divide10());

	return 0;
}
</code></pre>
<p>Leider meckert der Compiler 'instantiated from here' beim Aufruf von transform().<br />
Leider komme ich auch mit den Büchern hier nicht weiter.<br />
Kann mir jemand schnell einen Tipp geben?</p>
<p>Danke im Voraus!<br />
mfg<br />
rox</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1131651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131651</guid><dc:creator><![CDATA[roxor]]></dc:creator><pubDate>Tue, 05 Sep 2006 15:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 15:57:42 GMT]]></title><description><![CDATA[<p>roxor schrieb:</p>
<blockquote>
<p>Leider meckert der Compiler 'instantiated from here' beim Aufruf von transform().</p>
</blockquote>
<p><strong>Was</strong> meckert er denn <strong>wo</strong> an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1131660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131660</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 05 Sep 2006 15:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 16:01:59 GMT]]></title><description><![CDATA[<p>Hey</p>
<p>Wie gesagt, die Fehlermeldung ist:</p>
<pre><code>../main.cpp:16:   instantiated from here
</code></pre>
<p>beim Funktionsaufruf von</p>
<pre><code>transform(v1.begin(),v1.end(),osIt(cout,&quot;, &quot;),divide10());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1131667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131667</guid><dc:creator><![CDATA[roxor]]></dc:creator><pubDate>Tue, 05 Sep 2006 16:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 16:05:55 GMT]]></title><description><![CDATA[<p>Das ist alles? Wirklich? Ganz, ganz ehrlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1131674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131674</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 05 Sep 2006 16:05:55 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 16:22:51 GMT]]></title><description><![CDATA[<p>Nun, da gibts ne elend lange Meldung, ich schreib sie einfach mal hin, wenn's dir hilft!</p>
<pre><code>**** Full rebuild of configuration Debug for project Z_diverses ****

make -k clean all 
make: Warning: File `objects.mk' has modification time 0.7 s in the future
rm -rf  ./main.o  ./main.d Z_diverses.exe

Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -IC:\cygwin\usr\include\boost-1_33_1 -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ../main.cpp
../main.cpp: In function `int main()':
../main.cpp:29: warning: unused variable 'c1'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_algo.h: In function `_OutputIterator std::transform(_InputIterator, _InputIterator, _OutputIterator, _UnaryOperation) [with _InputIterator = __gnu_cxx::__normal_iterator&lt;int*, std::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt;, _OutputIterator = std::ostream_iterator&lt;int, char, std::char_traits&lt;char&gt; &gt;, _UnaryOperation = divide10]':
../main.cpp:44:   instantiated from here
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_algo.h:789: warning: passing `float' for converting 1 of `std::ostream_iterator&lt;_Tp, _CharT, _Traits&gt;&amp; std::ostream_iterator&lt;_Tp, _CharT, _Traits&gt;::operator=(const _Tp&amp;) [with _Tp = int, _CharT = char, _Traits = std::char_traits&lt;char&gt;]'
Finished building: ../main.cpp

Building target: Z_diverses.exe
Invoking: GCC C++ Linker
g++ -oZ_diverses.exe ./main.o
Finished building target: Z_diverses.exe

Build complete for project Z_diverses
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1131687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131687</guid><dc:creator><![CDATA[roxor]]></dc:creator><pubDate>Tue, 05 Sep 2006 16:22:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 16:38:03 GMT]]></title><description><![CDATA[<p>roxor schrieb:</p>
<blockquote>
<pre><code>Build complete for project Z_diverses
</code></pre>
</blockquote>
<p>Wo ist das Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1131694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131694</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 05 Sep 2006 16:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Tue, 05 Sep 2006 17:04:50 GMT]]></title><description><![CDATA[<p>Du solltest die Warnings posten, nicht dein ganzes verdammtes Build-Log. Darüber hinaus wäre es auch hilfreich zu sagen ob dein Code sich nicht kompilieren lässt oder schlicht nicht das erhoffte Ergebnis fabriziert. Und den tatsächlichen Code zu posten würde auch nicht schaden.</p>
<p>Dein eigentliches Problem sind die falschen Datentypen. (int / int -&gt; int)</p>
<pre><code class="language-cpp">typedef ostream_iterator&lt;float&gt; osIt;
// ...
transform(v1.begin(), v1.end(), osIt(cout, &quot;, &quot;), bind2nd(divides&lt;float&gt;(), 10.f));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1131711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1131711</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 05 Sep 2006 17:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Wed, 06 Sep 2006 07:45:31 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Du solltest die Warnings posten, nicht dein ganzes verdammtes Build-Log. ...</p>
</blockquote>
<p>Na, doch kein Grund, unfreundlich zu werden .... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
Schließlich wurde er mehrfach deutlich aufgefordert, &quot;alles zu zeigen&quot;; wenn er das nun tut (und der output auch noch so klein ist), finde ich das voll in Ordnung.</p>
<p>@&quot;roxor&quot;: Anscheinend passt die Meldung nicht ganz zu Deinem Quellcode (Zeile 44 gibt's da nicht) - vermutlich hast Du den gekürzt (was ich eigentlich begrüße)</p>
<p>&quot;../main.cpp:44: instantiated from here &quot; ist dabei lediglich eine Erläuterung zu der eigentlich Warnung:<br />
&quot;warning: passing `float' for converting 1 of `std::ostream_iterator&lt;...'&quot;</p>
<p>Es kann für die Fehlersuche sehr hilfreich sein, zu wissen, wo welches template instantiiert wurde (Merke: Der Compiler erzeugt von jedem template bei Bedarf eine &quot;echte&quot; (konkrete) Klasse/Funktion mit den entsprechenden template-Parametern ... diesen Vorgang nennt man &quot;template-Instanziierung&quot;).</p>
<p>Beim &quot;Teilen durch 10 von Integern&quot; würde ich an Deiner Stelle nochmal überdenken, was Du wirklich willst....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132022</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 06 Sep 2006 07:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Wed, 06 Sep 2006 08:22:41 GMT]]></title><description><![CDATA[<p>Zwei kleine Anmerkungen noch zu deinem Quellcode:</p>
<p>roxor schrieb:</p>
<blockquote>
<pre><code class="language-cpp">struct divide10:public std::unary_function&lt;int,float&gt;{
	float operator()(const int j) const { return j/10;	}
};
</code></pre>
</blockquote>
<p>Das funktioniert zwar, liefert aber vermutlich das falsche Ergebnis (Stichwort: Ganzzahl-Rechnung). richtig wäre wohl &quot;return (float)j / 10;&quot;.</p>
<blockquote>
<pre><code class="language-cpp">v1 += 12,23,34,45,56,67,78,89,90;
v2 += 1,1,1,1,1,1,1,1,1;
}
</code></pre>
</blockquote>
<p>Diese beiden Zeilen sind Unsinn (erstaunlich, daß dein Compiler das geschluckt hat) - vector&lt;&gt; hat keinen operator+= und selbst wenn, würde der nur den letzten Wert dieser Sammlung bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132054</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 06 Sep 2006 08:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Wed, 06 Sep 2006 08:48:14 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>...</p>
<blockquote>
<pre><code class="language-cpp">v1 += 12,23,34,45,56,67,78,89,90;
v2 += 1,1,1,1,1,1,1,1,1;
}
</code></pre>
</blockquote>
<p>Diese beiden Zeilen sind Unsinn (erstaunlich, daß dein Compiler das geschluckt hat) - vector&lt;&gt; hat keinen operator+= und selbst wenn, würde der nur den letzten Wert dieser Sammlung bekommen.</p>
</blockquote>
<p>Nutzt er vielleicht boost/assign/std/vector.hpp ?<br />
( <a href="http://www.boost.org/libs/assign/doc/index.html" rel="nofollow">http://www.boost.org/libs/assign/doc/index.html</a> )<br />
da geht das nämlich ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132079</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 06 Sep 2006 08:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Wed, 06 Sep 2006 09:46:38 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>finix schrieb:</p>
<blockquote>
<p>Du solltest die Warnings posten, nicht dein ganzes verdammtes Build-Log. ...</p>
</blockquote>
<p>Na, doch kein Grund, unfreundlich zu werden .... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
Schließlich wurde er mehrfach deutlich aufgefordert, &quot;alles zu zeigen&quot;; wenn er das nun tut (und der output auch noch so klein ist), finde ich das voll in Ordnung.</p>
</blockquote>
<p>Genau, &quot;<strong>Was</strong> meckert er denn <strong>wo</strong> an?&quot; war die Aufforderung das ganze Build-Log zu posten. Und jemanden auf die vielfältigen Probleme seiner Fragetaktik hinzuweisen ist wirklich so was von unfreundlich. Danke, Simon2. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132140</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 06 Sep 2006 09:46:38 GMT</pubDate></item><item><title><![CDATA[Reply to Funktoren und unary_function on Wed, 06 Sep 2006 11:07:50 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>...nicht dein ganzes verdammtes Build-Log. ...</p>
</blockquote>
<p>Ist einfach unfreundlich, fertig.<br />
Übrigens ist sein &quot;ganzes verdammtes Build-Log&quot; deutlich kürzer als der Source-code der meisten Fragesteller hier.</p>
<p>finix schrieb:</p>
<blockquote>
<p>...Das ist alles? Wirklich? Ganz, ganz ehrlich? ...</p>
</blockquote>
<p>Ist auch nicht unbedingt entgegenkommend und dass er daraufhin nicht einfach nochmal das schickt, was er als &quot;alles&quot; empfindet, sondern &quot;alles, was der Compiler rausspuckt&quot;, empfinde ich wirklich nicht als Dämlichkeit.</p>
<p>Überdenke einfach mal den Ton, mit dem Du hier auftrittst ... sprichst Du so auch mit Deinen Freunden ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1132198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1132198</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 06 Sep 2006 11:07:50 GMT</pubDate></item></channel></rss>