<?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[Lokale Kopie von Membervariable erzeugen]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe eine Klasse</p>
<pre><code class="language-cpp">class classification
{
private:
	map&lt;int, set&lt;int&gt; &gt; m_crf;   
	void set_to_pure(const int i, const int val); 
public:
	classification();
	void change();
};

void classification::change()
{
	int k = f(...);   // f irgendeine Funktion
	for (set&lt;int&gt;::iterator jt = m_crf[k].begin(); jt != m_crf[k].end(); ++jt)
		set_to_pure(*jt, k);
}
</code></pre>
<p>Das Problem ist nun, dass <em>set_to_pure</em> die Membervariable <em>m_crf</em> verändert und die Schleife daher nicht macht was sie soll.</p>
<p>Ich könnte das Problem dadurch umgehen, dass ich eine lokale Kopie von <em>m_crf</em> anlege und mit der arbeite, also</p>
<pre><code class="language-cpp">void classification::change()
{
	int k = f(...);   // f irgendeine Funktion
	set&lt;int&gt; s = m_crf[k];
	for (set&lt;int&gt;::iterator jt = s.begin(); jt != s.end(); ++jt)
		set_to_pure(*jt, k);
}
</code></pre>
<p>Ich frage mich nun aber, ob man das irgendwie auch eleganter hinkriegt. Insbesondere, ob man irgendwie eine Funktion <em>get_local_copy_of_crf()</em> definieren kann, die man direkt in die Schleife einsetzen kann, also</p>
<pre><code class="language-cpp">void classification::change()
{
	int k = f(...);   // f irgendeine Funktion
	for (set&lt;int&gt;::iterator jt = get_local_copy_of_crf()[k].begin(); jt != get_local_copy_of_crf[k].end(); ++jt)
		set_to_pure(*jt, k);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/208285/lokale-kopie-von-membervariable-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 18:30:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208285.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Mar 2008 09:59:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lokale Kopie von Membervariable erzeugen on Mon, 17 Mar 2008 09:59:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe eine Klasse</p>
<pre><code class="language-cpp">class classification
{
private:
	map&lt;int, set&lt;int&gt; &gt; m_crf;   
	void set_to_pure(const int i, const int val); 
public:
	classification();
	void change();
};

void classification::change()
{
	int k = f(...);   // f irgendeine Funktion
	for (set&lt;int&gt;::iterator jt = m_crf[k].begin(); jt != m_crf[k].end(); ++jt)
		set_to_pure(*jt, k);
}
</code></pre>
<p>Das Problem ist nun, dass <em>set_to_pure</em> die Membervariable <em>m_crf</em> verändert und die Schleife daher nicht macht was sie soll.</p>
<p>Ich könnte das Problem dadurch umgehen, dass ich eine lokale Kopie von <em>m_crf</em> anlege und mit der arbeite, also</p>
<pre><code class="language-cpp">void classification::change()
{
	int k = f(...);   // f irgendeine Funktion
	set&lt;int&gt; s = m_crf[k];
	for (set&lt;int&gt;::iterator jt = s.begin(); jt != s.end(); ++jt)
		set_to_pure(*jt, k);
}
</code></pre>
<p>Ich frage mich nun aber, ob man das irgendwie auch eleganter hinkriegt. Insbesondere, ob man irgendwie eine Funktion <em>get_local_copy_of_crf()</em> definieren kann, die man direkt in die Schleife einsetzen kann, also</p>
<pre><code class="language-cpp">void classification::change()
{
	int k = f(...);   // f irgendeine Funktion
	for (set&lt;int&gt;::iterator jt = get_local_copy_of_crf()[k].begin(); jt != get_local_copy_of_crf[k].end(); ++jt)
		set_to_pure(*jt, k);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1475671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475671</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 17 Mar 2008 09:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale Kopie von Membervariable erzeugen on Mon, 17 Mar 2008 10:18:51 GMT]]></title><description><![CDATA[<p>Die &quot;lokale Kopie&quot; ist doch genau das, was du in dem zweiten Codeschnipsel hast, tuts das nicht? Was macht die Funktion set_to_pure denn eigentlich mit der map?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475682</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 17 Mar 2008 10:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale Kopie von Membervariable erzeugen on Mon, 17 Mar 2008 10:25:10 GMT]]></title><description><![CDATA[<p>Wie ich das sehe, gibt es keine &quot;bessere&quot; Möglichkeit.<br />
Ich neheme mal an, dass du die Schleife so durchmachen willst, wie sie am Anfang war. Und da du sie während dessen änderst geht das nicht anderst, als eine lokale Kopie zu erstellen. Und am Schluss alles wieder zurückkopieren.</p>
<p>Und da du das ganze am Schluss ja noch zurückkopieren musst, bringt die eine Funktion nicht viel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475686</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 17 Mar 2008 10:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale Kopie von Membervariable erzeugen on Mon, 17 Mar 2008 10:32:00 GMT]]></title><description><![CDATA[<p>Zu Badestrand: set_to_pure löscht ggf. einen key aus der map</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475690</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 17 Mar 2008 10:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale Kopie von Membervariable erzeugen on Mon, 17 Mar 2008 10:37:45 GMT]]></title><description><![CDATA[<p>set_to_pure einen iterator zurück geben lassen (vgl. std::set&lt;&gt;::erase usw.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475692</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 17 Mar 2008 10:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale Kopie von Membervariable erzeugen on Mon, 17 Mar 2008 10:40:08 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>Zu Badestrand: set_to_pure löscht ggf. einen key aus der map</p>
</blockquote>
<p>In dem einfachen Fall würde ich es auch so machen, wie es (D)Evil schrieb.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475696</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 17 Mar 2008 10:40:08 GMT</pubDate></item></channel></rss>