<?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[null-zeiger oder [böse] referenz]]></title><description><![CDATA[<p>hi,</p>
<p>ich habe eine suchfunktion, die eine liste zurückgibt. was ist besser: (bzw, was ist überhaupt legal...)</p>
<pre><code class="language-cpp">list&lt; mein_typ &gt; &amp; find( string )
{
    static list&lt; mein_typ &gt; empty_list;
    if( /* was gefunden */ )
        return das_gefundene;
    else
        return empty_list;
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">list&lt; mein_typ &gt; * find( string )
{
    static list&lt; mein_typ &gt; empty_list;
    if( /* was gefunden */ )
        return &amp;das_gefundene;
    else
        return NULL;
}
</code></pre>
<p>eine kopie möchte ich nicht zurückgeben. ich würde zum ersten tendieren, aber geht das überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134860/null-zeiger-oder-böse-referenz</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 17:37:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134860.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Jan 2006 12:22:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to null-zeiger oder [böse] referenz on Sun, 29 Jan 2006 12:22:28 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich habe eine suchfunktion, die eine liste zurückgibt. was ist besser: (bzw, was ist überhaupt legal...)</p>
<pre><code class="language-cpp">list&lt; mein_typ &gt; &amp; find( string )
{
    static list&lt; mein_typ &gt; empty_list;
    if( /* was gefunden */ )
        return das_gefundene;
    else
        return empty_list;
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">list&lt; mein_typ &gt; * find( string )
{
    static list&lt; mein_typ &gt; empty_list;
    if( /* was gefunden */ )
        return &amp;das_gefundene;
    else
        return NULL;
}
</code></pre>
<p>eine kopie möchte ich nicht zurückgeben. ich würde zum ersten tendieren, aber geht das überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/979706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979706</guid><dc:creator><![CDATA[doppelmuffe]]></dc:creator><pubDate>Sun, 29 Jan 2006 12:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to null-zeiger oder [böse] referenz on Sun, 29 Jan 2006 12:28:59 GMT]]></title><description><![CDATA[<p>Was soll find tun und was ist das ominöse das_gefundene?<br />
Auf jeden Fall solltest du aber mir Referenzen aufpassen, da damit die empty_list verändert werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/979714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979714</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 29 Jan 2006 12:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to null-zeiger oder [böse] referenz on Sun, 29 Jan 2006 12:33:20 GMT]]></title><description><![CDATA[<p>keins von beidem, das macht man etwa so:</p>
<pre><code class="language-cpp">template&lt;class Iterator, class Inserter&gt;
void mySearchFunc(Iterator begin, Iterator end, Inserter in)
{
    /* fügt alle gefundenen Sachen in den Inserter ein ... */
}
</code></pre>
<p>Aufruf:</p>
<pre><code class="language-cpp">mySearchFunc(myString.begin(), myString.end(), back_inserter&lt;list&lt;myType&gt; &gt;(myList));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/979716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979716</guid><dc:creator><![CDATA[siehe STL]]></dc:creator><pubDate>Sun, 29 Jan 2006 12:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to null-zeiger oder [böse] referenz on Sun, 29 Jan 2006 12:40:49 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Auf jeden Fall solltest du aber mir Referenzen aufpassen, da damit die empty_list verändert werden kann.</p>
</blockquote>
<p>autsch. stimmt. ich könnte aber ne const-reference nehmen.</p>
<p>mir ist auch gerade aufgefallen, dass find() nur ein element zurückgibt, und zwar pair&lt; string, list&lt; typ* &gt; &gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/979727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979727</guid><dc:creator><![CDATA[doppelmuffe]]></dc:creator><pubDate>Sun, 29 Jan 2006 12:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to null-zeiger oder [böse] referenz on Sun, 29 Jan 2006 14:52:49 GMT]]></title><description><![CDATA[<p>doppelmuffe schrieb:</p>
<blockquote>
<p>eine kopie möchte ich nicht zurückgeben.</p>
</blockquote>
<p>warum nicht ?<br />
Habt nicht so viel Angst vor Performance-Verlust ;)! Die meisten Compiler beherrschen heute das 'Optimieren des Return-Values' recht gut. Zum Beispiel</p>
<pre><code class="language-cpp">list&lt; mein_typ &gt;  find( string ) // Return list&lt;&gt; per Value
{
    if( /* was gefunden */ )
        return das_gefundene;
    else
        return list&lt; mein_typ &gt;(); // mit leerer Liste zurück
}
</code></pre>
<p>Rufe das so auf:</p>
<pre><code class="language-cpp">list&lt; mein_typ &gt; l = find( aString ); // 'l' wird erst aus dem Return-Wert von find(..) erzeugt
</code></pre>
<p>.. dann macht Dein Compiler schon 'alles richtig'. Probier's mal aus und mache im Kopy-Konstruktor von mein_typ 'ne Ausgabe rein, dann siehst Du wie viele oder wie wenige (!) Kopien gemacht werden.</p>
<p>Ansonsten tendiere ich auch zur gleichen Lösung wie von 'siehe STL' vorgeschlagen.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/979830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979830</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 29 Jan 2006 14:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to null-zeiger oder [böse] referenz on Sun, 29 Jan 2006 15:21:55 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>[quote=&quot;Werner Salomon&quot;]</p>
<p>doppelmuffe schrieb:</p>
<blockquote>
<p>Habt nicht so viel Angst vor Performance-Verlust ;)!</p>
</blockquote>
<p>nee, nocht nicht mal das. wo die listen in diesem fall i.a. sogar recht kurz sein sollten. aber ich wollte auf pair&lt;bla&gt;.second zugreifen können. war aber ne blöde idee.<br />
dass der compiler die eine überflüssige return-wert-kopie weglässt, wusste ich :p</p>
<p>naja, jetzt gehts. danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/979857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979857</guid><dc:creator><![CDATA[doppelmuffe]]></dc:creator><pubDate>Sun, 29 Jan 2006 15:21:55 GMT</pubDate></item></channel></rss>