<?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[Getter-Funktion eines Containers wird viel zu oft aufgerufen]]></title><description><![CDATA[<p>Servus,</p>
<p>ich habe einen Container als Attribut gespeichert, das StringSet kann man meines Erachtens als ehesten mit einem Vektor vergleichen. Jetzt ist es so, dass ich einen ganz normalen Getter dafür schreiben wollte, den ich dann auch aufrufe. Ich stelle fest, dass die Getter-Methode wie in einer Endlossschleife durchgeht und der Lauf dann irgendwann abbricht - was ist da los?</p>
<p>Der komplette Quellcode ist hier in einer Datei, die beiden relevanten Stellen mit // XXX... hervorgehoben:<br />
<a href="http://www.jochen-bauer.net/downloads/main-03032011.txt" rel="nofollow">http://www.jochen-bauer.net/downloads/main-03032011.txt</a></p>
<p>Die beiden Stellen sind:</p>
<pre><code class="language-cpp">seqan::StringSet&lt; seqan::CharString &gt; getSequencesList() {
        cout &lt;&lt; &quot;Msa-getSequencesList() ...\n&quot;;
        cout &lt;&lt; &quot;... // Msa-getSequencesList()\n&quot;;
        return sequencesList;
    } // TODO schauen ob da eine Referenz als Rückgabe passender ist
</code></pre>
<pre><code class="language-cpp">// Debug Msa
    string str = msaToCompute.toString();
    // TODO wieso kommen hier 1000 Aufrufe statt nur einer?
    seqan::StringSet&lt; seqan::CharString &gt; seqListTemp = msaToCompute.getSequencesList();
    int numberOfSeqs = seqan::length( seqListTemp );
    cout &lt;&lt; &quot;\n MSA (&quot; &lt;&lt; numberOfSeqs &lt;&lt; &quot; Sequenzen);\n&quot;;
    cout &lt;&lt; str;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/283061/getter-funktion-eines-containers-wird-viel-zu-oft-aufgerufen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 19:18:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/283061.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Mar 2011 10:23:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Getter-Funktion eines Containers wird viel zu oft aufgerufen on Fri, 04 Mar 2011 10:23:36 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>ich habe einen Container als Attribut gespeichert, das StringSet kann man meines Erachtens als ehesten mit einem Vektor vergleichen. Jetzt ist es so, dass ich einen ganz normalen Getter dafür schreiben wollte, den ich dann auch aufrufe. Ich stelle fest, dass die Getter-Methode wie in einer Endlossschleife durchgeht und der Lauf dann irgendwann abbricht - was ist da los?</p>
<p>Der komplette Quellcode ist hier in einer Datei, die beiden relevanten Stellen mit // XXX... hervorgehoben:<br />
<a href="http://www.jochen-bauer.net/downloads/main-03032011.txt" rel="nofollow">http://www.jochen-bauer.net/downloads/main-03032011.txt</a></p>
<p>Die beiden Stellen sind:</p>
<pre><code class="language-cpp">seqan::StringSet&lt; seqan::CharString &gt; getSequencesList() {
        cout &lt;&lt; &quot;Msa-getSequencesList() ...\n&quot;;
        cout &lt;&lt; &quot;... // Msa-getSequencesList()\n&quot;;
        return sequencesList;
    } // TODO schauen ob da eine Referenz als Rückgabe passender ist
</code></pre>
<pre><code class="language-cpp">// Debug Msa
    string str = msaToCompute.toString();
    // TODO wieso kommen hier 1000 Aufrufe statt nur einer?
    seqan::StringSet&lt; seqan::CharString &gt; seqListTemp = msaToCompute.getSequencesList();
    int numberOfSeqs = seqan::length( seqListTemp );
    cout &lt;&lt; &quot;\n MSA (&quot; &lt;&lt; numberOfSeqs &lt;&lt; &quot; Sequenzen);\n&quot;;
    cout &lt;&lt; str;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2029576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2029576</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 04 Mar 2011 10:23:36 GMT</pubDate></item><item><title><![CDATA[Reply to Getter-Funktion eines Containers wird viel zu oft aufgerufen on Fri, 04 Mar 2011 11:25:17 GMT]]></title><description><![CDATA[<p>Hallo Jay1980,</p>
<p>sobald die Zeile</p>
<pre><code class="language-cpp">seqan::StringSet&lt; seqan::CharString &gt; seqListTemp = msaToCompute.getSequencesList();
</code></pre>
<p>durchlaufen wird, wird vom Objekt der Klasse seqan::StringSet&lt; seqan::CharString &gt; eine Kopie angelegt.</p>
<p>Meinst Du mit &quot;wieso kommen hier 1000 Aufrufe statt nur einer?&quot; dass 1000 mal &quot;Msa-getSequencesList() ...\n&quot; usw. ausgegeben wird?<br />
Bist Du sicher, dass oben genannte Zeile (bzw. besser die Methode getSequencesList()) nicht mehr als einmal durchlaufen wird? Wie oft wird denn H2r::computeDependancies() aufgerufen? Dort ist eine Schleife, die so oft aufgerufen wird, wie sich Elemente in dem StringSet-Objekt befinden.</p>
<p>@Nachtrag: wenn Du statt</p>
<pre><code class="language-cpp">double getCurrentPairEntropy( seqan::StringSet&lt;seqan::CharString&gt; sequencesList, int currentColumn, int columnPartner)
</code></pre>
<p>besser schreibst</p>
<pre><code class="language-cpp">double getCurrentPairEntropy( const seqan::StringSet&lt;seqan::CharString&gt;&amp; sequencesList, int currentColumn, int columnPartner)
</code></pre>
<p>und dann in getSequencesList() ein</p>
<pre><code class="language-cpp">const seqan::StringSet&lt;seqan::CharString&gt;&amp;
</code></pre>
<p>als Returntype wählst, wäre wohl schon viel gewonnen.</p>
<p>Beschäftige Dich doch mal mit den Themen '<a href="http://en.wikipedia.org/wiki/Const-correctness" rel="nofollow">const correctness</a>' und '<a href="http://de.wikipedia.org/wiki/Initialisierungsliste" rel="nofollow">Initialisierungsliste</a>'.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2029601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2029601</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 04 Mar 2011 11:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to Getter-Funktion eines Containers wird viel zu oft aufgerufen on Fri, 04 Mar 2011 17:35:09 GMT]]></title><description><![CDATA[<p>Danke für die Tipps Werner,</p>
<p>ich lesen die Sachen nach und ändere den Code entsprechend, du hattest Recht, ich denke die Funktion wird nicht öfter als erwartet aufgerufen, ich vergaß vorher, dass ich die Test losschickte - es tritt aber irgendwann die folgende Fehlermeldung auf und ich kann nicht direkt erkennen, an welcher Stelle ich da nach einem Fehler suchen sollte, danke vorab für etwas Aufklärung:<br />
/home/jay/gtd08042010/archiv/programme/seqan_bioinformatik/Seqan_Release_1.3/seqan/sequence/string_base.h:237 Assertion failed : static_cast&lt;TStringPos&gt;(pos) &lt; static_cast&lt;TStringPos&gt;(length(me)) was: 4 &gt;= 4 (Trying to access an element behind the last one!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2029816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2029816</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 04 Mar 2011 17:35:09 GMT</pubDate></item><item><title><![CDATA[Reply to Getter-Funktion eines Containers wird viel zu oft aufgerufen on Fri, 04 Mar 2011 18:23:59 GMT]]></title><description><![CDATA[<p>Okay ich habe nun mal ein paar Debugmeldungen reingetippt, um das Auftreten des Fehlers einzugrenzen und es scheint in der Methode getCurrentPairEntropy() zu krachen ... aber nicht bei den ersten Durchläufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2029834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2029834</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 04 Mar 2011 18:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Getter-Funktion eines Containers wird viel zu oft aufgerufen on Fri, 04 Mar 2011 19:05:25 GMT]]></title><description><![CDATA[<p>Okay, ist gelöst, ich arbeite ja oft mit einer Matrix und wollte die Anzahl der Spalten, in die Rechnung gab ich aber die Anzahl der Zeilen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2029854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2029854</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 04 Mar 2011 19:05:25 GMT</pubDate></item></channel></rss>