<?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[Eiträge einer Liste verändern]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich würde gerne pro Iteration jeweils einen Eintrag einer Liste, bestehend aus Structuren ändern. Meine Structur hat 3 Attribute und ich möchte jeweils eines davon ändern. Hier meine etwas abgeänderter code:</p>
<pre><code>struct myStruct{
		int x;
		int y;
		int z;
};
</code></pre>
<p>meine Methode sieht so aus:</p>
<pre><code>void change(list&lt;myStruct&gt; myStruct);

int main(int argc, char **argv) {
        list&lt;myStruct&gt; myStructList= initList();
        change(myStructList);
        // nachdem myStructList in der change methode verändert wurde
        // würde ich hier gerne mit der abgeänderten liste weiter arbeiten
	return(0);
}

void change(list&lt;myStruct&gt; myStruct){
	for(list&lt;myStruct&gt;::iterator i=myStruct.begin();i != myStruct.end();i++){

	}
}
</code></pre>
<p>Ich bin noch nicht so der Auskenner, daher ändert es ab wie es euch passt^^. Mein Ziel ist natürlich nicht nur das abändern, das problem liegt jedoch darin, das ich für jedes i , über welches ich iteriere und mir den jeweiligen Eintrag der Liste anschaue, auch den dazugehörigen Listeneintrag abändere.<br />
Ich möchte also z.b. pro iteration das z aus meiner structur jeweils um eins erhöhen und in meiner main mit der abgeänderten Liste weiter arbeiten. Kann mir jemand zeigen wie das geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/318011/eiträge-einer-liste-verändern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 21:39:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/318011.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Jun 2013 20:26:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Thu, 27 Jun 2013 20:27:45 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich würde gerne pro Iteration jeweils einen Eintrag einer Liste, bestehend aus Structuren ändern. Meine Structur hat 3 Attribute und ich möchte jeweils eines davon ändern. Hier meine etwas abgeänderter code:</p>
<pre><code>struct myStruct{
		int x;
		int y;
		int z;
};
</code></pre>
<p>meine Methode sieht so aus:</p>
<pre><code>void change(list&lt;myStruct&gt; myStruct);

int main(int argc, char **argv) {
        list&lt;myStruct&gt; myStructList= initList();
        change(myStructList);
        // nachdem myStructList in der change methode verändert wurde
        // würde ich hier gerne mit der abgeänderten liste weiter arbeiten
	return(0);
}

void change(list&lt;myStruct&gt; myStruct){
	for(list&lt;myStruct&gt;::iterator i=myStruct.begin();i != myStruct.end();i++){

	}
}
</code></pre>
<p>Ich bin noch nicht so der Auskenner, daher ändert es ab wie es euch passt^^. Mein Ziel ist natürlich nicht nur das abändern, das problem liegt jedoch darin, das ich für jedes i , über welches ich iteriere und mir den jeweiligen Eintrag der Liste anschaue, auch den dazugehörigen Listeneintrag abändere.<br />
Ich möchte also z.b. pro iteration das z aus meiner structur jeweils um eins erhöhen und in meiner main mit der abgeänderten Liste weiter arbeiten. Kann mir jemand zeigen wie das geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334872</guid><dc:creator><![CDATA[sfgheady]]></dc:creator><pubDate>Thu, 27 Jun 2013 20:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Thu, 27 Jun 2013 20:35:40 GMT]]></title><description><![CDATA[<p>Die Methode muss folgende Signatur haben:</p>
<pre><code class="language-cpp">void change(list&lt;myStruct&gt;&amp; myStructs);
</code></pre>
<p>Erstens musst du die Liste als Referenz übergeben und nicht als Kopie, denn wenn die Kopie verändert wird, kriegt der Aufrufer das nicht mit.<br />
Zweitens darfst du den Parameter nicht gleich nennen, wie die Struktur selbst.</p>
<p>Wie du vom Iterator an den Wert kommst, kannst du sicher selbst rausfinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334874</guid><dc:creator><![CDATA[gfvbsdawgt]]></dc:creator><pubDate>Thu, 27 Jun 2013 20:35:40 GMT</pubDate></item><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Thu, 27 Jun 2013 20:49:42 GMT]]></title><description><![CDATA[<p>hallo,<br />
danke für deine information.<br />
an den wert komme ich ja mit (wie in meinem Beispiel):</p>
<pre><code>i-&gt;z
</code></pre>
<p>aber ist das i eine reference meiner structure? wenn ich jetzt über das i mein z verändere</p>
<pre><code>i-&gt;z+1;
</code></pre>
<p>ändert sich auch der Eintrag meiner Liste? Bin noch nicht so c++ begabt. Wenn es nicht so passt, könnte jemand sagen wie es geht?</p>
<p>Edit: Ist ja cool, das klappt sogar. Vielen Dank. Deine Info war ausschlaggebend!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334876</guid><dc:creator><![CDATA[sfgheady]]></dc:creator><pubDate>Thu, 27 Jun 2013 20:49:42 GMT</pubDate></item><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Thu, 27 Jun 2013 21:02:42 GMT]]></title><description><![CDATA[<p>Die Signatur sollte besser gar kein Objekt nehmen sondern ein Iteratoren-Paar.<br />
Denn wenn die Funktion schon so aussieht, dann ist es wahrscheinlich so besser:</p>
<pre><code>void change( list&lt;myStruct&gt;::iterator first,
             list&lt;myStruct&gt;::iterator last ){
    while( first != last )
    {
        // ...
    }
}
</code></pre>
<p>Wenn vielleicht sogar der Iteratorentyp nicht wichtig ist, dann wäre noch besser:</p>
<pre><code>template&lt;typename Iterator&gt;
void change( Iterator first,
             Iterator last ){
    while( first != last )
    {
        // ...
    }
}
</code></pre>
<p>Es klappt, weil i intern einen Verweis auf deine originalen Listenelemente hat. Also in gewisser Weise ja, ist es eine Referenz. Ähnlich wie ein Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334880</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 27 Jun 2013 21:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Fri, 28 Jun 2013 08:55:39 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Die Signatur sollte besser gar kein Objekt nehmen sondern ein Iteratoren-Paar.<br />
Denn wenn die Funktion schon so aussieht, dann ist es wahrscheinlich so besser:</p>
<pre><code>void change( list&lt;myStruct&gt;::iterator first,
             list&lt;myStruct&gt;::iterator last ){
    while( first != last )
    {
        // ...
    }
}
</code></pre>
<p>Wenn vielleicht sogar der Iteratorentyp nicht wichtig ist, dann wäre noch besser:</p>
<pre><code>template&lt;typename Iterator&gt;
void change( Iterator first,
             Iterator last ){
    while( first != last )
    {
        // ...
    }
}
</code></pre>
<p>Es klappt, weil i intern einen Verweis auf deine originalen Listenelemente hat. Also in gewisser Weise ja, ist es eine Referenz. Ähnlich wie ein Zeiger.</p>
</blockquote>
<p>Und was ist, wenn die Implementation seiner Liste keine Iteratoren anbietet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334951</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 28 Jun 2013 08:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Fri, 28 Jun 2013 09:24:32 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Und was ist, wenn die Implementation seiner Liste keine Iteratoren anbietet?</p>
</blockquote>
<p>Er verwendet offensichtlich <code>std::list</code> als unqualified-id. Wo redet er von einer eigenen Implementation? Schließt du das aus &quot;meine Liste&quot;? Ich glaube, damit meint er einfach, dass er ein &quot;eigenes&quot; Listenobjekt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334958</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 28 Jun 2013 09:24:32 GMT</pubDate></item><item><title><![CDATA[Reply to Eiträge einer Liste verändern on Fri, 28 Jun 2013 09:27:44 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>DocShoe schrieb:</p>
<blockquote>
<p>Und was ist, wenn die Implementation seiner Liste keine Iteratoren anbietet?</p>
</blockquote>
<p>Er verwendet offensichtlich <code>std::list</code> als unqualified-id. Wo redet er von einer eigenen Implementation? Schließt du das aus &quot;meine Liste&quot;? Ich glaube, damit meint er einfach, dass er ein &quot;eigenes&quot; Listenobjekt hat.</p>
</blockquote>
<p>Jau, mein Fehler. 11:00 Uhr und Lesen fällt immer noch schwer o.O<br />
=&gt; Kaffee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334962</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 28 Jun 2013 09:27:44 GMT</pubDate></item></channel></rss>