<?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[std::sort sortiert vector nicht vollständig]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich weiß nicht, wo mein Fehler liegt. Ich habe folgenden Vector:</p>
<pre><code>std::vector&lt;Element&gt; vecData;
</code></pre>
<p>Wobei Element wie folgt aussieht:</p>
<pre><code>class Element {
    public:
    // ctor 

    // Weitere Member

    Point2d m_point;  // double x, double y
};
</code></pre>
<p>Nun wird <em>vecData</em> gefüllt und ich möchte ihn sortieren, und zwar nach der x-Koordinate. Hierfür habe ich definiert:</p>
<pre><code>bool operator&lt;(const Element &amp; p1, const Element &amp; p2) {
	return (p1.m_point.x &lt; p2.m_point.x);
}
</code></pre>
<p>Sortieren:</p>
<pre><code>std::sort(vecData.begin(), vecData.end());
</code></pre>
<p>Problem:</p>
<p>Ich schreibe die x-Werte vor und nach dem Sortieren in eine Datei. Es wird zwar sortiert, aber nicht gänzlich korrekt. Das sehe ich, wenn ich mit Matlab das &quot;sortierte&quot; Ergebnis nochmal sortiere und dann vergleiche. Hier mal ein Beispiel:</p>
<p>Auszug unsortiert:</p>
<pre><code>7.84489449880666
7.854832525784217
7.855502000161023
7.846657579986165
7.851022442727947
7.860771401233759
7.864081860825058
7.8455106132252
[...]
</code></pre>
<p>&quot;Sortiert&quot;:</p>
<pre><code>7.84489449880666
7.8455106132252
7.845896795822748
7.846264271448749
7.846244286403353
7.84626155973324
7.846419006019873
7.846507838726909
[...]
</code></pre>
<p>Zeilen 4 und 5 sind schon nicht korrekt sortiert (5. Nachkommastelle). Matlab's sort-Funktion macht es korrekt:</p>
<pre><code>7.844894498806660
7.845510613225200
7.845896795822748
7.846244286403353
7.846261559733240
7.846264271448749
7.846419006019873
7.846507838726909
</code></pre>
<p>Ich verstehe aber nicht, was ich hier falsch mache. std::sort scheint ja gefühlt schon 75% korrekt zu sortieren <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/338675/std-sort-sortiert-vector-nicht-vollständig</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 10:15:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338675.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Jul 2016 08:18:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::sort sortiert vector nicht vollständig on Sat, 02 Jul 2016 08:18:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich weiß nicht, wo mein Fehler liegt. Ich habe folgenden Vector:</p>
<pre><code>std::vector&lt;Element&gt; vecData;
</code></pre>
<p>Wobei Element wie folgt aussieht:</p>
<pre><code>class Element {
    public:
    // ctor 

    // Weitere Member

    Point2d m_point;  // double x, double y
};
</code></pre>
<p>Nun wird <em>vecData</em> gefüllt und ich möchte ihn sortieren, und zwar nach der x-Koordinate. Hierfür habe ich definiert:</p>
<pre><code>bool operator&lt;(const Element &amp; p1, const Element &amp; p2) {
	return (p1.m_point.x &lt; p2.m_point.x);
}
</code></pre>
<p>Sortieren:</p>
<pre><code>std::sort(vecData.begin(), vecData.end());
</code></pre>
<p>Problem:</p>
<p>Ich schreibe die x-Werte vor und nach dem Sortieren in eine Datei. Es wird zwar sortiert, aber nicht gänzlich korrekt. Das sehe ich, wenn ich mit Matlab das &quot;sortierte&quot; Ergebnis nochmal sortiere und dann vergleiche. Hier mal ein Beispiel:</p>
<p>Auszug unsortiert:</p>
<pre><code>7.84489449880666
7.854832525784217
7.855502000161023
7.846657579986165
7.851022442727947
7.860771401233759
7.864081860825058
7.8455106132252
[...]
</code></pre>
<p>&quot;Sortiert&quot;:</p>
<pre><code>7.84489449880666
7.8455106132252
7.845896795822748
7.846264271448749
7.846244286403353
7.84626155973324
7.846419006019873
7.846507838726909
[...]
</code></pre>
<p>Zeilen 4 und 5 sind schon nicht korrekt sortiert (5. Nachkommastelle). Matlab's sort-Funktion macht es korrekt:</p>
<pre><code>7.844894498806660
7.845510613225200
7.845896795822748
7.846244286403353
7.846261559733240
7.846264271448749
7.846419006019873
7.846507838726909
</code></pre>
<p>Ich verstehe aber nicht, was ich hier falsch mache. std::sort scheint ja gefühlt schon 75% korrekt zu sortieren <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/2500833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500833</guid><dc:creator><![CDATA[991SE]]></dc:creator><pubDate>Sat, 02 Jul 2016 08:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to std::sort sortiert vector nicht vollständig on Sat, 02 Jul 2016 08:57:33 GMT]]></title><description><![CDATA[<p>Der Fehler wird wohl in dem Code liegen, den du nicht zeigst (z.B. Selbst geschriebene Zuweisungsoperatoren). Das mit dem übersetzbaren Minimalbeispiel hat schon seinen Grund ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500834</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 02 Jul 2016 08:57:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::sort sortiert vector nicht vollständig on Sat, 02 Jul 2016 09:29:25 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Der Fehler wird wohl in dem Code liegen, den du nicht zeigst (z.B. Selbst geschriebene Zuweisungsoperatoren). Das mit dem übersetzbaren Minimalbeispiel hat schon seinen Grund ...</p>
</blockquote>
<p>An welcher Stelle/Klasse muss ich denn suchen? In Point2d?</p>
<p>Überladen wären hier ==, +=, -=, -, +</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500844</guid><dc:creator><![CDATA[991SE]]></dc:creator><pubDate>Sat, 02 Jul 2016 09:29:25 GMT</pubDate></item><item><title><![CDATA[Reply to std::sort sortiert vector nicht vollständig on Sat, 02 Jul 2016 09:33:31 GMT]]></title><description><![CDATA[<p>991SE schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Der Fehler wird wohl in dem Code liegen, den du nicht zeigst (z.B. Selbst geschriebene Zuweisungsoperatoren). Das mit dem übersetzbaren Minimalbeispiel hat schon seinen Grund ...</p>
</blockquote>
<p>An welcher Stelle/Klasse muss ich denn suchen? In Point2d?</p>
<p>Überladen wären hier ==, +=, -=, -, +</p>
</blockquote>
<p>Wenn du nicht weißt, wo du suchen musst, dann lass uns suchen. Das geht natürlich nur, wenn du uns auch den Code zeigst. Wie schon gesagt: Compilierbares <strong>Minimal</strong>beispiel.<br />
<a href="https://www.c-plusplus.net/forum/304133">Wie man Probleme nachstellbar und nachvollziehbar macht</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500846</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 02 Jul 2016 09:33:31 GMT</pubDate></item></channel></rss>