<?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[map (mit Klasse als Value) vergleichen]]></title><description><![CDATA[<p>Moin,</p>
<p>hab ne kurze Frage zu maps (oder im Prinzip allen STL-Containern).</p>
<p>Wenn ich in einer map als Value eine Klasse oder ein struct speichere:</p>
<pre><code class="language-cpp">map&lt;int, myClass&gt; Out;
</code></pre>
<p>und dann diese map mit einer anderen vergleiche, wird dann der Vergleichsoperator der Klasse aufgerufen? Oder findet der Vergleich anders statt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158299/map-mit-klasse-als-value-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 18:09:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158299.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Sep 2006 07:52:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 07:52:59 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>hab ne kurze Frage zu maps (oder im Prinzip allen STL-Containern).</p>
<p>Wenn ich in einer map als Value eine Klasse oder ein struct speichere:</p>
<pre><code class="language-cpp">map&lt;int, myClass&gt; Out;
</code></pre>
<p>und dann diese map mit einer anderen vergleiche, wird dann der Vergleichsoperator der Klasse aufgerufen? Oder findet der Vergleich anders statt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130553</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Mon, 04 Sep 2006 07:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 08:22:35 GMT]]></title><description><![CDATA[<p>Du meinst so etwas:</p>
<pre><code class="language-cpp">map&lt;int,myClass&gt; m1,m2;
...
if(m1==m2)
  cout&lt;&lt;&quot;identisch&quot;;
</code></pre>
<p>Afaik werden da die Elemente mit operator== verglichen (bei den Schlüsselanteilen in map's und set's könnte auch die übergebene Vergleichsfunktion verwendet werden).</p>
<p>Aber warum schaust du nicht selber nach? Die Vergleichsfunktionen findest du in den Systemheadern (&lt;map&gt; etc).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130562</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 04 Sep 2006 08:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 08:24:24 GMT]]></title><description><![CDATA[<p>Es wird der Vergleichsoperator der Klasse benutzt.</p>
<p>Wenn du zwei Container vergleichst, wird der Algorithmus equal über das Iteratoren-Intervall [begin(), end) aufgerufen, d.h. bei einer Map werden jeweils die Paare aus Key und Value miteinander über den == Operator verglichen. Bei pair greift dieser wieder auf die == Operatoren der beteiligten Typen zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130563</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 04 Sep 2006 08:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 11:07:43 GMT]]></title><description><![CDATA[<p>Mmh, dass dachte ich mir.</p>
<p>Jetzt hab ich den Vergleichsoperator implementiert, jedoch kommt der Fehler 2678, dass der passende Operator nicht gefunden wurde:</p>
<blockquote>
<p>C:\Programme\Microsoft Visual Studio 8\VC\include\utility(63) : error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'const IOPin' akzeptiert (oder keine geeignete Konvertierung möglich)</p>
</blockquote>
<p>Klasse IOPin</p>
<pre><code class="language-cpp">...

// Vergleichsoperator
bool IOPin::operator ==(const IOPin &amp;p)
{
    if(Mode != p.Mode)
        return false;

    if(Polarity != p.Polarity)
        return false;

    return true;
}

...
</code></pre>
<p>Verwendung in einer anderen Klasse IOPinConfig:</p>
<pre><code class="language-cpp">...

map&lt;unsigned long, IOPin&gt; Input;
map&lt;unsigned long, IOPin&gt; Output;

/*
	Vergleichsoperator
*/
bool IOPinConfig::operator ==(const IOPinConfig &amp;pc)
{
	if(!(Input == pc.Input))
		return false;

	if(!(Output == pc.Output))
		return false;

	return false;
}

...
</code></pre>
<p>Wenn ich den Vergleichsoperator von IOPinConfig aufrufe, soll er die beiden maps Input und Output vergleichen.<br />
Diese enthalten nen Schlüssel und eine Instanz der Klasse IOPin. Der Vergleichsoperator der map sollte doch jetzt den Vergleichsoperator von IOPin aufrufen. Laut Fehlermeldung versucht er das auch, aber warum findet er die Implementierung nicht?<br />
Oder ist sie schlicht falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130681</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Mon, 04 Sep 2006 11:07:43 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 11:20:34 GMT]]></title><description><![CDATA[<pre><code>Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ '[b]const[/b] IOPin' akzeptiert
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code class="language-cpp">bool IOPinConfig::operator ==(const IOPinConfig &amp;pc) const
</code></pre>
<p>Müsste es sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130692</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 04 Sep 2006 11:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 11:22:45 GMT]]></title><description><![CDATA[<p>Danke, dass war der Fehler.</p>
<p>Kann mir das mal kurz jemand erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130694</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Mon, 04 Sep 2006 11:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 11:31:37 GMT]]></title><description><![CDATA[<p>Du übergibst bei Methodenaufrufen ja immer implizit ein Objekt IOPinConfig. Beim Aufruf des operator== sogar zwei (linke Seite und rechte Seite). Die constness des rechten Objektes markierst Du durch den Parametertyp (const IOPinConfig&amp;). Das linke Objekt ist jedoch das this-Objekt. Da es dafür keinen expliziten Parameter gibt, wandert das const in dem Fall hinter die Deklaration.</p>
<p>Vielleicht zur Veranschaulichung:</p>
<pre><code class="language-cpp">// als externer Operator
bool operator==( const IOPinConfig&amp; a, const IOPinConfig&amp; b );

// innerhalb der Klasse
class IOPinConfig 
{
    bool operator==( const IOPinConfig&amp; b ) /* was oben a ist ist hier (*this), deshalb -&gt; */ const;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1130699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130699</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 04 Sep 2006 11:31:37 GMT</pubDate></item><item><title><![CDATA[Reply to map (mit Klasse als Value) vergleichen on Mon, 04 Sep 2006 11:54:39 GMT]]></title><description><![CDATA[<p>Okay, verstanden.</p>
<p>Danke sehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130711</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Mon, 04 Sep 2006 11:54:39 GMT</pubDate></item></channel></rss>