<?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[erase() benötigt delete?]]></title><description><![CDATA[<p>Hi...<br />
ich habe folgenden Code und frage mich ob ich meine Vectorelemente die ich mit new anfordere nur mit erase wieder freigebe, oder zusätzlich ein delete brauche?</p>
<pre><code class="language-cpp">typedef vector&lt;User&gt;::iterator IteratorType;

class Chat_impl : virtual public POA_Chat {

    private:
        vector&lt;User&gt; userlist;
    public:
        Chat_impl(){ };

        CORBA::Short Chat_impl::idl_login( const char* nick, const char* ip ){

            CORBA::Short success=0;

            User *u = new User((string)nick, (string)ip);
            string str;
            IteratorType it;
            bool v=true;

            for(it = userlist.begin(); it != userlist.end(); it++){
                cout &lt;&lt; it-&gt;get_ip() &lt;&lt; it-&gt;get_name() &lt;&lt; endl;
                (it-&gt;get_ip() == ip)? v=false : v=true;
            }
            if(v == true){
                userlist.push_back(*u);
                str =&quot;User &quot; + (string)nick + &quot; erfolgreich eingeloggt.&quot;;
                success = 1;
            }
            else {
                str =&quot;User &quot; + (string)nick + &quot; bereits eingeloggt.&quot;;
            }

            return success;
            };

        CORBA::Short Chat_impl::idl_disconnect( const char* ip ) {

            CORBA::Short success=0;

            IteratorType it;
            string str;
            cout &lt;&lt; &quot;Useranzahl: &quot; &lt;&lt; userlist.size() &lt;&lt; endl;
            for (it = userlist.begin(); it != userlist.end(); it++){
                if((string)it-&gt;get_ip() == ip){
                    str = &quot;Loesche &quot; + it-&gt;get_name() +&quot; !&quot;;

                    // DELETE ???

                    userlist.erase(it);
                    success = 1;
                    break;
                }
            }

            return success;
        };
...
...
</code></pre>
<p>Falls ich ein zusätzliches delete brauchen würde, verstehe ich nicht so recht wie dieses mit eingebunden wird... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke für jeden Tip!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167692/erase-benötigt-delete</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 01:31:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167692.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Dec 2006 22:03:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to erase() benötigt delete? on Wed, 13 Dec 2006 22:03:56 GMT]]></title><description><![CDATA[<p>Hi...<br />
ich habe folgenden Code und frage mich ob ich meine Vectorelemente die ich mit new anfordere nur mit erase wieder freigebe, oder zusätzlich ein delete brauche?</p>
<pre><code class="language-cpp">typedef vector&lt;User&gt;::iterator IteratorType;

class Chat_impl : virtual public POA_Chat {

    private:
        vector&lt;User&gt; userlist;
    public:
        Chat_impl(){ };

        CORBA::Short Chat_impl::idl_login( const char* nick, const char* ip ){

            CORBA::Short success=0;

            User *u = new User((string)nick, (string)ip);
            string str;
            IteratorType it;
            bool v=true;

            for(it = userlist.begin(); it != userlist.end(); it++){
                cout &lt;&lt; it-&gt;get_ip() &lt;&lt; it-&gt;get_name() &lt;&lt; endl;
                (it-&gt;get_ip() == ip)? v=false : v=true;
            }
            if(v == true){
                userlist.push_back(*u);
                str =&quot;User &quot; + (string)nick + &quot; erfolgreich eingeloggt.&quot;;
                success = 1;
            }
            else {
                str =&quot;User &quot; + (string)nick + &quot; bereits eingeloggt.&quot;;
            }

            return success;
            };

        CORBA::Short Chat_impl::idl_disconnect( const char* ip ) {

            CORBA::Short success=0;

            IteratorType it;
            string str;
            cout &lt;&lt; &quot;Useranzahl: &quot; &lt;&lt; userlist.size() &lt;&lt; endl;
            for (it = userlist.begin(); it != userlist.end(); it++){
                if((string)it-&gt;get_ip() == ip){
                    str = &quot;Loesche &quot; + it-&gt;get_name() +&quot; !&quot;;

                    // DELETE ???

                    userlist.erase(it);
                    success = 1;
                    break;
                }
            }

            return success;
        };
...
...
</code></pre>
<p>Falls ich ein zusätzliches delete brauchen würde, verstehe ich nicht so recht wie dieses mit eingebunden wird... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke für jeden Tip!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191459</guid><dc:creator><![CDATA[startupboy]]></dc:creator><pubDate>Wed, 13 Dec 2006 22:03:56 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Wed, 13 Dec 2006 22:16:22 GMT]]></title><description><![CDATA[<p>Warum machst du das überhaupt mit new und nicht mit einem Objekt das auf dem Stack angelegt wird. Und wenn du dies machst:</p>
<pre><code class="language-cpp">userlist.push_back(*u);
</code></pre>
<p>speicherst du eine Kopie, also kannst du eigentlich direkt hinter diesem push_back auch das delete machen. Weil später kommst du über den vector nicht mehr an den Speicher.</p>
<p>Das Thema hatten wir aber gerade erst hier:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-167502.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-167502.html</a></p>
<p>Mach doch einfach statt</p>
<pre><code class="language-cpp">User *u = new User((string)nick, (string)ip);
</code></pre>
<p>dies:</p>
<pre><code class="language-cpp">User u((string)nick, (string)ip);
</code></pre>
<p>Und dann packst du einfach nur u in den Container und kannst dir das dereferenzieren und das delete sparen.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191463</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 13 Dec 2006 22:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Wed, 13 Dec 2006 23:14:15 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Hilfe!<br />
Jetzt habe ich es Verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191480</guid><dc:creator><![CDATA[startupboy]]></dc:creator><pubDate>Wed, 13 Dec 2006 23:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Thu, 14 Dec 2006 00:04:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">(it-&gt;get_ip() == ip)? v=false : v=true;
</code></pre>
<p>Witzig! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191485</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Thu, 14 Dec 2006 00:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Thu, 14 Dec 2006 07:58:41 GMT]]></title><description><![CDATA[<p>? Was is'n daran witzig ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191525</guid><dc:creator><![CDATA[startupboy]]></dc:creator><pubDate>Thu, 14 Dec 2006 07:58:41 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Thu, 14 Dec 2006 08:03:53 GMT]]></title><description><![CDATA[<p>Vermutlich weil du einen Ausdruck der true oder false zurück gibt auf true oder false überprüfst um dann true oder false zu speichern... mit anderen Worten du kannst das Ergebnis des Ausdruckes auch direkt in der Variable speichern...</p>
<pre><code>v = !(it-&gt;get_ip() == ip);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1191527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191527</guid><dc:creator><![CDATA[Staati]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Thu, 14 Dec 2006 08:04:44 GMT]]></title><description><![CDATA[<p>es sieht zumindest gewöhnungsbedürftig aus. Normalerweise nimmt man den ?:, um eine Zuweisung aus einem if-else &quot;auszuklammern&quot;, nicht als Ersatz für if-else:</p>
<pre><code class="language-cpp">v=(it-&gt;get_ip()==ip)?false:true;
//oder kürzer
v=(it-&gt;get_ip()!=ip);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1191529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191529</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:04:44 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Thu, 14 Dec 2006 08:30:20 GMT]]></title><description><![CDATA[<p>ah... Ok.<br />
Das kam automatisch, da ich es auch mit nicht boolschen Zuweisungen so mache...</p>
<pre><code class="language-cpp">(it-&gt;get_ip() == ip)? wert=123 : wert=0;
</code></pre>
<p>Aber danke für den Hinweis...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191548</guid><dc:creator><![CDATA[startupboy]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to erase() benötigt delete? on Thu, 14 Dec 2006 08:36:03 GMT]]></title><description><![CDATA[<p>Auch das sieht witzig aus. Der Operator &quot;?:&quot; ist ein Operator, welcher einen Wert liefert. Also bei nicht boolschen Zuweisungen entweder so:</p>
<pre><code class="language-cpp">if (it-&gt;get_ip() == ip)
  wert = 123;
else
  wert = 0;
</code></pre>
<p>oder so:</p>
<pre><code class="language-cpp">wert = (it-&gt;get_ip() == ip ? 123 : 0);
</code></pre>
<p>Tntnet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1191553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1191553</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 14 Dec 2006 08:36:03 GMT</pubDate></item></channel></rss>