<?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[STL std::set find() mit Objektinstanzen]]></title><description><![CDATA[<p>Halli hallo. Vielleicht besser in diesem Forum:</p>
<p>Ich habe ein schönes set, da kommen lauter kleine Instanzen von Vektoren eines Zustandsraums rein, also z.B. 10 integer Werte:</p>
<pre><code class="language-cpp">std::set&lt;vector10d&gt; attributeSet;
</code></pre>
<p>Die Vector-Klasse selbst ist sehr einfach, sie hat halt ein Array mit 10 Elementen UND vor allem natürlich einen spitzenmäßigen == Operator.</p>
<pre><code class="language-cpp">class vector10d {
...
int element[10];

inline const bool operator==( const vector10d &amp;comp )
{
   return element[0] == comp.element[0] &amp;&amp;
   element[1] == comp.element[1] &amp;&amp;
   ... &amp;&amp;
   element[9] == comp.element[9];
};
</code></pre>
<p>Jaha. Und jetzt will ich, nachdem ich einen Haufen Vektoren in mein attributeSet reingetan habe später nach einem solchen suchen. Natürlich weiß ich, dass die Suche erfolgreich sein muss. Ist sie leider nicht, daher mein Posting. Einfach gesagt: find(...) funktioniert nicht. Es behauptet unnachgiebig, dass es mein gesuchtes Element nicht gibt.</p>
<pre><code class="language-cpp">vector10d att(1,2,3, ...);

if ((attributeSet.find(att) != attributeSet.end())
{
   //GEFUNDEN! JUHUUU!! &lt;- nix is... :(
}
</code></pre>
<p>Dann hab ich was über find_if(...) gelesen und versucht es einzubauen, aber dollerweise gibts das nicht für ein std::set.</p>
<p>Was tun? <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/274159/stl-std-set-find-mit-objektinstanzen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 19:04:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274159.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Sep 2010 21:46:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 21:46:31 GMT]]></title><description><![CDATA[<p>Halli hallo. Vielleicht besser in diesem Forum:</p>
<p>Ich habe ein schönes set, da kommen lauter kleine Instanzen von Vektoren eines Zustandsraums rein, also z.B. 10 integer Werte:</p>
<pre><code class="language-cpp">std::set&lt;vector10d&gt; attributeSet;
</code></pre>
<p>Die Vector-Klasse selbst ist sehr einfach, sie hat halt ein Array mit 10 Elementen UND vor allem natürlich einen spitzenmäßigen == Operator.</p>
<pre><code class="language-cpp">class vector10d {
...
int element[10];

inline const bool operator==( const vector10d &amp;comp )
{
   return element[0] == comp.element[0] &amp;&amp;
   element[1] == comp.element[1] &amp;&amp;
   ... &amp;&amp;
   element[9] == comp.element[9];
};
</code></pre>
<p>Jaha. Und jetzt will ich, nachdem ich einen Haufen Vektoren in mein attributeSet reingetan habe später nach einem solchen suchen. Natürlich weiß ich, dass die Suche erfolgreich sein muss. Ist sie leider nicht, daher mein Posting. Einfach gesagt: find(...) funktioniert nicht. Es behauptet unnachgiebig, dass es mein gesuchtes Element nicht gibt.</p>
<pre><code class="language-cpp">vector10d att(1,2,3, ...);

if ((attributeSet.find(att) != attributeSet.end())
{
   //GEFUNDEN! JUHUUU!! &lt;- nix is... :(
}
</code></pre>
<p>Dann hab ich was über find_if(...) gelesen und versucht es einzubauen, aber dollerweise gibts das nicht für ein std::set.</p>
<p>Was tun? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1955041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955041</guid><dc:creator><![CDATA[zorro59]]></dc:creator><pubDate>Mon, 20 Sep 2010 21:46:31 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 22:08:33 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Was tun? <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>
</blockquote>
<p>Code wiederverwenden. Zwei Sequenzen auf Gleichheit überprüfen kannst du mit dem STL-Algorithmus<a href="http://www.cplusplus.com/reference/algorithm/equal/" rel="nofollow"> <code>std::equal()</code> </a>. Wenn dein Compiler den TR1 (Technical Report 1) unterstützt, kannst du sogar <code>std::tr1::array</code> und dessen Gleichheitsoperator verwenden. Mit Boost wäre die Alternative <code>boost::array</code> .</p>
<p>Für dein <code>std::set</code> benötigst du allerdings einen <code>operator&lt;</code> oder ein benutzerdefiniertes Sortierprädikat, das du uns unterschlagen hast. Die Memberfunktion <code>std::set::find()</code> findet anhand von Äquivalenz, nicht Gleichheit. D.h., zwei Elemente <code>a</code> und <code>b</code> sind äquivalent im Bezug auf das Sortierkriterium, falls gilt:</p>
<pre><code class="language-cpp">!(a &lt; b) &amp;&amp; !(b &lt; a)
</code></pre>
<p>Im Weiteren solltest du <code>operator==</code> als freie Funktion ausserhalb der Klasse implementieren. Das <code>const</code> im Rückgabetyp <code>const bool</code> hat überhaupt keinen Effekt und sollte deshalb weggelassen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955050</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 20 Sep 2010 22:08:33 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 22:10:19 GMT]]></title><description><![CDATA[<p>Zeige ein kurzes, kompilierbares Beispiel, was das Problem verdeutlicht. Wenn's nicht kompiliert bitte auch die Fehlermeldung. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955051</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 20 Sep 2010 22:10:19 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 22:51:44 GMT]]></title><description><![CDATA[<p>Erstmal danke für die Antworten! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <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>
<p>Puuh, dass alles als kompaktes Problem zu posten wird ein Gefrickel. Da muss ich die Klasse ja ganzschön beschneiden, ich hab da ja auch die ganzen &quot;+&quot;, &quot;-&quot;, ... Operatoren mit drinne...</p>
<p>Die operator&lt; und operator&gt; hab ich jetzt eingebaut, hilft aber nüscht. Die vergleichen jetzt komponentenweise, also erst ob die erste Komponenten kleiner/größer ist, wenn die gleich sind dann die zweite, etc., wie bei Zahlen. So kann definitiv sortiert werden.</p>
<p>Kompilieren tut er. Hätte der, bevor ich die &lt; &gt; definiert habe da nicht sagen müssen, dass er für das find() garnicht weiß, wie er die vergleichen soll? Er hat wahrscheinlich einfach die Pointer miteinander verglichen. Meine &lt; &gt; Operatoren verwendet er wohl nicht für den Äquivalenztest... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955062</guid><dc:creator><![CDATA[zorro59]]></dc:creator><pubDate>Mon, 20 Sep 2010 22:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 23:03:07 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Kompilieren tut er. Hätte der, bevor ich die &lt; &gt; definiert habe da nicht sagen müssen, dass er für das find() garnicht weiß, wie er die vergleichen soll?</p>
</blockquote>
<p>Eigentlich schon...</p>
<p>zorro59 schrieb:</p>
<blockquote>
<p>Er hat wahrscheinlich einfach die Pointer miteinander verglichen. Meine &lt; &gt; Operatoren verwendet er wohl nicht für den Äquivalenztest... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>...welche Pointer?</p>
<p>kleines, kompilierbares Beispiel zeigen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955064</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 20 Sep 2010 23:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 23:09:57 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Kompilieren tut er. Hätte der, bevor ich die &lt; &gt; definiert habe da nicht sagen müssen, dass er für das find() garnicht weiß, wie er die vergleichen soll? Er hat wahrscheinlich einfach die Pointer miteinander verglichen. Meine &lt; &gt; Operatoren verwendet er wohl nicht für den Äquivalenztest... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Wenn du Pointer in das <code>set</code> packst, dann solltest du, wenn du willst, dass der Inhalt verglichen willst, als zweiten Template Parameter einen Funktor <code>less</code> übergeben, der die Pointer dereferenziert und dann vergleicht.</p>
<p>Ungetestet:</p>
<pre><code class="language-cpp">struct ptr_less {
   bool operator() (blah* p1, blah* p2) 
   {
      return *p1 &lt; *p2;
   }
};

std::set&lt;blah*, ptr_less&gt; mein_set;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1955065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955065</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 20 Sep 2010 23:09:57 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Mon, 20 Sep 2010 23:36:17 GMT]]></title><description><![CDATA[<p>Progchild, du bist ein Held.</p>
<p>Vielen Dank, so funktioniert es! Lustigerweise sieht meine ptr_less so aus:</p>
<pre><code class="language-cpp">struct ptr_less {
	bool operator() (vector10d p1, vector10d p2)
	{
		return p1 &lt; p2;
	}
};
</code></pre>
<p>Die Instanzen von vector10d, die ich in das set reinlege, erstelle ich nicht mit new sondern so:</p>
<pre><code class="language-cpp">vector10d myAttribute(5,4,4,2,7,9,0,7,8,1);
</code></pre>
<p>Entsprechend hab ich natürlich einen Konstruktor:</p>
<pre><code class="language-cpp">inline vector10d(int e1, int e2, ...)
{
  element[0] = e1;
  element[1] = e2;
  ...
}
</code></pre>
<p>Also sind dann irgendwie wiederum keine Pointer. find() geht aber erst nach deinem glorreichen Tip.</p>
<p>Wenn mir das jetzt nochmal einer erklären kann? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955070</guid><dc:creator><![CDATA[zorro59]]></dc:creator><pubDate>Mon, 20 Sep 2010 23:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 00:28:51 GMT]]></title><description><![CDATA[<p>Btw. hat das const im Rueckgabetyp doch einen Effekt, weil es folgende, unlogische Statements verhindert:</p>
<pre><code class="language-cpp">vector10d a(...);
vector10d b(...);
a == b = true;
</code></pre>
<p>Stand doch auch in &quot;Effektiv C++ programmieren&quot; als guter Stil, oder?</p>
<p>Waere es hier zudem nicht performanter einen gehashten Container zu nehmen? Bei jedem Vergleich 10 ints zu vergleichen erscheint mir nicht optimal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955077</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 21 Sep 2010 00:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 01:22:25 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Btw. hat das const im Rueckgabetyp doch einen Effekt, weil es folgende, unlogische Statements verhindert:</p>
<pre><code class="language-cpp">vector10d a(...);
vector10d b(...);
a == b = true;
</code></pre>
</blockquote>
<p>Dieses unlogische Statement braucht man nicht zu verhindern, so lange der Rückgabetyp von operator == ein bool ist (oder sonst ein eingebauter Typ). Was ich mal aus <em>äusserst</em> üblich bezeichnen würde.</p>
<p>Die Zuweisund wäre nur bei einem UDT als Rückgabetyp möglich, da Aufrufe von Memberfunktionen (inklusive solche die als Operatoren &quot;getarnt&quot; sind) auf r-values erlaubt sind.</p>
<p>Bei eingebauten Typen sind Zuweisungen mit r-values als Ziel allerdings nicht erlaubt.</p>
<p>Probier's aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">struct foo {};

// hier brauchen wir kein const!
bool operator == (foo lhs, foo rhs)
{
	return true;
}

// ---------------------------------------------------

struct bar {};
struct baz
{
	baz&amp; operator = (baz const&amp;) { return *this; }
	baz&amp; operator = (bool) { return *this; }
};

// hier macht es nen unterschied
baz /*const*/ operator == (bar lhs, bar rhs)
{
	return baz();
}

// ---------------------------------------------------

int main() 
{ 
// 	foo a;
// 	foo b;
// 	a == b = true;	// geht sowieso nicht

	bar c;
	bar d;
	c == d = baz(); // geht ohne das const oben
	c == d = true;  // -- &quot;&quot; --

	return 0;
}

// aber wer macht schon sowas...
</code></pre>
<p>Ich bin überhaupt der Meinung dass das Thema &quot;= statt == verhindern&quot; bei manchen etwas ausartet. Ich finde kaum etwas grässlicher als die - für mich vollkommen verqueren - Vergleiche ala <code>if (0 == blah())</code> . *schüttel*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955082</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 21 Sep 2010 01:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 07:09:19 GMT]]></title><description><![CDATA[<p>Gut, wieder was gelernt. <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>
<p>bei (0 == blah()) stimme ich dir absolut zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955091</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 21 Sep 2010 07:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 06:25:28 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Progchild, du bist ein Held.<br />
Vielen Dank, so funktioniert es! Lustigerweise sieht meine ptr_less so aus:</p>
<pre><code class="language-cpp">struct ptr_less {
	bool operator() (vector10d p1, vector10d p2)
	{
		return p1 &lt; p2;
	}
};
</code></pre>
<p>Die Instanzen von vector10d, die ich in das set reinlege, erstelle ich nicht mit new sondern so:</p>
<pre><code class="language-cpp">vector10d myAttribute(5,4,4,2,7,9,0,7,8,1);
</code></pre>
<p>Entsprechend hab ich natürlich einen Konstruktor:</p>
<pre><code class="language-cpp">inline vector10d(int e1, int e2, ...)
{
  element[0] = e1;
  element[1] = e2;
  ...
}
</code></pre>
</blockquote>
<p>Das ergibt alles keinen Sinn! Wenn Du für vector10d, welches anscheinend ein Klassentyp ist, schon operator&lt; definiert hast, brauchst Du keine eigene &quot;Comparator&quot;-Klasse! ProgChild ist davon ausgegangen, dass Du std::set&lt;vector10d*&gt; benutzt. Wir raten hier alle nur rum, weil Du keinen relevanten Code zeigst! Vielleicht hast Du deinen operator&lt; auch im falschen Namensraum definiert, so dass std::set den nicht automatisch finden kann. Man weiß es nicht. Wir können nicht Gedankenlesen!</p>
<p>zorro59 schrieb:</p>
<blockquote>
<p>Also sind dann irgendwie wiederum keine Pointer.</p>
</blockquote>
<p>Da Du anscheinend nicht weißt, was Du tust, ist ein kurzes kompilierbares Codebeispiel umso wichtiger!</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955111</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 21 Sep 2010 06:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 08:32:54 GMT]]></title><description><![CDATA[<p>Ihr habt Probleme. <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="🙂"
    /> Ich habs mir einfach so gemerkt: man soll immer</p>
<pre><code class="language-cpp">const
</code></pre>
<p>benutzen, es sei denn das Resultat soll später noch verändert werden.</p>
<p>Aber nochmal danke für die Hilfe! Zu meiner letzten Frage. Objektinstanzen sind doch an sich schon immer eine Art Pointer, oder?</p>
<pre><code class="language-cpp">myObject.x1
myArray[1]
</code></pre>
<p>ist doch ähnlich. In beiden Fällen wird erstmal der Speichebereich des Objekts bzw. des Arrays (myObject, myArray) referenziert. Die Position der Elemente wird danach festgestellt (beim Array zählt er halt einen sizeof(...) Schritt hoch, beim Objekt sonst wie).</p>
<p>Oder verwechsel ich das mit irgendeinem Unsinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955180</guid><dc:creator><![CDATA[zorro59]]></dc:creator><pubDate>Tue, 21 Sep 2010 08:32:54 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 08:58:47 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Zu meiner letzten Frage. Objektinstanzen sind doch an sich schon immer eine Art Pointer, oder?</p>
<pre><code class="language-cpp">myObject.x1
myArray[1]
</code></pre>
<p>ist doch ähnlich. In beiden Fällen wird erstmal der Speichebereich des Objekts bzw. des Arrays (myObject, myArray) referenziert. Die Position der Elemente wird danach festgestellt (beim Array zählt er halt einen sizeof(...) Schritt hoch, beim Objekt sonst wie).</p>
<p>Oder verwechsel ich das mit irgendeinem Unsinn?</p>
</blockquote>
<p>Das, was Du sagst, ergibt genauso viel Sinn wie &quot;Nachts ist es kälter als draußen&quot;. Zeige kleine, kompilierbare Codebeispiele. Sonst weiß keiner wovon Du redest. Und wenn man nicht weiß, wovon Du redest, kann man Dir auch nicht helfen. Und Hilfe hast Du bei Deinem gefährlichen Halbwissen wirklich nötig!</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955185</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 21 Sep 2010 08:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 13:35:08 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Aber nochmal danke für die Hilfe! Zu meiner letzten Frage. Objektinstanzen sind doch an sich schon immer eine Art Pointer, oder?</p>
</blockquote>
<p>Nein. C++ ist kein Java.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955399</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 21 Sep 2010 13:35:08 GMT</pubDate></item><item><title><![CDATA[Reply to STL std::set find() mit Objektinstanzen on Tue, 21 Sep 2010 18:17:38 GMT]]></title><description><![CDATA[<p>zorro59 schrieb:</p>
<blockquote>
<p>Ihr habt Probleme. <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="🙂"
    /> Ich habs mir einfach so gemerkt: man soll immer</p>
<pre><code class="language-cpp">const
</code></pre>
<p>benutzen, es sei denn das Resultat soll später noch verändert werden.</p>
</blockquote>
<p>Die Regel ist zwar als Anfängerfaustregel okay, aber für eine generelle Richtlinie zu einfach. Ein paar Beispiele für schlecht eingesetztes <code>const</code> :</p>
<pre><code class="language-cpp">const int Function();
</code></pre>
<pre><code class="language-cpp">void Function(const int parameter);
</code></pre>
<pre><code class="language-cpp">class Person
{
    // ...
    const Date myBirthDate;
};
</code></pre>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Ich bin überhaupt der Meinung dass das Thema &quot;= statt == verhindern&quot; bei manchen etwas ausartet. Ich finde kaum etwas grässlicher als die - für mich vollkommen verqueren - Vergleiche ala <code>if (0 == blah())</code> . *schüttel*</p>
</blockquote>
<p>Schön, dass ich mit dieser Meinung nicht allein dastehe! <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/1955554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955554</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 21 Sep 2010 18:17:38 GMT</pubDate></item></channel></rss>