<?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[Sortieren eines Vektors mit einem Strukt]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin leider auf ein Problem gestoßen, für das ich bisher keine Lösung finden konnte.</p>
<p>Ich habe ein Struct, das wie folgt aufgebaut ist:</p>
<pre><code>struct AE{
                Point2i v1;
                Point2i v2;
            };
            vector&lt;AE&gt; AfEd;
</code></pre>
<p>Es könnte z.B. diese Wertepaare erhalten:</p>
<pre><code>AfEd[0]: (5,1)(3,4)
      AfEd[1]: (2,5)(6,22)
      AfEd[2]: (6,3)(6,2)
</code></pre>
<p>Wie schaffe ich es den Vektor nach dem ersten Wert des ersten Wertepaares zu sortieren?</p>
<p>Das hier sollte herauskommen:</p>
<pre><code>AfEd[0]: (2,5)(6,22)
      AfEd[1]: (5,1)(3,4)      
      AfEd[2]: (6,3)(6,2)
</code></pre>
<p>Ich habe leider nicht die geringste Idee, wie ich das anstellen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Vielen Dank für die Hilfe <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/topic/326995/sortieren-eines-vektors-mit-einem-strukt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 21:28:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326995.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Jul 2014 14:54:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sortieren eines Vektors mit einem Strukt on Fri, 18 Jul 2014 14:54:02 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin leider auf ein Problem gestoßen, für das ich bisher keine Lösung finden konnte.</p>
<p>Ich habe ein Struct, das wie folgt aufgebaut ist:</p>
<pre><code>struct AE{
                Point2i v1;
                Point2i v2;
            };
            vector&lt;AE&gt; AfEd;
</code></pre>
<p>Es könnte z.B. diese Wertepaare erhalten:</p>
<pre><code>AfEd[0]: (5,1)(3,4)
      AfEd[1]: (2,5)(6,22)
      AfEd[2]: (6,3)(6,2)
</code></pre>
<p>Wie schaffe ich es den Vektor nach dem ersten Wert des ersten Wertepaares zu sortieren?</p>
<p>Das hier sollte herauskommen:</p>
<pre><code>AfEd[0]: (2,5)(6,22)
      AfEd[1]: (5,1)(3,4)      
      AfEd[2]: (6,3)(6,2)
</code></pre>
<p>Ich habe leider nicht die geringste Idee, wie ich das anstellen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Vielen Dank für die Hilfe <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/2409254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409254</guid><dc:creator><![CDATA[Vektor]]></dc:creator><pubDate>Fri, 18 Jul 2014 14:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren eines Vektors mit einem Strukt on Fri, 18 Jul 2014 14:58:05 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie schaffe ich es den Vektor nach dem ersten Wert des ersten Wertepaares zu sortieren?</p>
</blockquote>
<pre><code>std::sort( std::begin(AfEd), std::end(AfEd), [] (AE const&amp; lhs, AE const&amp; rhs) {return lhs.v1.x &lt; rhs.v1.x;} ); // ungetestet
</code></pre>
<p>Mit C++98 sieht es ähnlich aus.</p>
<pre><code>bool myCompare(AE const&amp; lhs, AE const&amp; rhs)
{
    return lhs.v1.x &lt; rhs.v1.x;
}
// ...

std::sort( AfEd.begin(), AfEd.end(), myCompare ); // ebenfalls ungetestet
</code></pre>
<p>Übrigens solltest du ggf. die Namenswahl etwas ernster nehmen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2409256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409256</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 18 Jul 2014 14:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren eines Vektors mit einem Strukt on Fri, 18 Jul 2014 17:41:41 GMT]]></title><description><![CDATA[<p>Vielen Dank,</p>
<p>die Lösung funktioniert einwandfrei <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>Leider verstehe ich den Code nicht vollständig.</p>
<p>Was genau bedeutet oder macht der Teil ab &quot;AE const&quot;?<br />
Ich möchte ja auch was lernen <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>
<p>Das mit der Namensgebung nehme ich mir in Zukunft zu Herzen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2409280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409280</guid><dc:creator><![CDATA[Vektor]]></dc:creator><pubDate>Fri, 18 Jul 2014 17:41:41 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren eines Vektors mit einem Strukt on Fri, 18 Jul 2014 18:05:51 GMT]]></title><description><![CDATA[<p>Vektor schrieb:</p>
<blockquote>
<p>Was genau bedeutet oder macht der Teil ab &quot;AE const&quot;?</p>
</blockquote>
<p>Vorher verstehst du alles, danach nicht mehr? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Glaube ich dir nicht. Oder du guckst nicht genau genug hin und hast die [] nicht gesehen. Merke: Code ist kein zufällig zusammen gewürfelter Haufen Zeichen, Code ist Logik pur. Du musst von jedem Zeichen genau wissen, warum es wo gesetzt ist. Wusstest du, dass [] einen Lambda-Ausdruck einleitet? Dann ist der Rest doch auch klar. Oder wenn du es nicht wusstest, dann weißt du nun, nach welchem Stichwort du suchen musst. Das ist so eine Art Minifunktion, die man lokal definieren kann. In diesem Fall einfach die Funktion aus dem 2. Beispiel, aber eben direkt in den sort-Aufruf geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409282</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 18 Jul 2014 18:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren eines Vektors mit einem Strukt on Fri, 18 Jul 2014 18:21:50 GMT]]></title><description><![CDATA[<blockquote>
<p>Was genau bedeutet oder macht der Teil ab &quot;AE const&quot;?</p>
</blockquote>
<p>Verschiedene STL-Algorithmen nehmen einen <code>Comparator</code> (zu Deutsch mehr oder weniger ein Vergleicher), ein Funktionsobjekt* das zwei Elemente entsprechenden Typs vergleicht.</p>
<p>Sie nehmen standardmäßig eine Spezialisierung von<a href="http://en.cppreference.com/w/cpp/utility/functional/less" rel="nofollow"> <code>std::less</code> </a>, ein Funktionsobjekt-Typ der einfach - wie sein Name schon andeutet - den &lt; Operator verwendet.</p>
<p>Man kann aber auch sein eigenes Funktionsobjekt übergeben. Das geschieht oben.</p>
<p>Zusätzlich nutze ich im ersten Code ein mit C++11 eingeführtes Feature namens <a href="http://en.cppreference.com/w/cpp/language/lambda" rel="nofollow">Lambda</a>. Der Typ eines Lambdas ist eine Klasse (welche den <code>operator()</code> überlädt). Sie sind natürlich ebenfalls Funktionsobjekte, da man sie wie gewöhnliche Funktionen aufrufen kann; einige können sogar wie Funktionen zu Funktionszeigern zerfallen. Hier dient das Lambda als Comparator - was es tut sollte klar sein.</p>
<p>Weniger intuitiv dürfte die Syntax sein, es ist allerdings zu kompliziert all das in diesem Post zu erklären - besitzt du kein (aktuelles) Grundlagenbuch so besuche die in meiner Signatur verlinkte Linkliste oder richte dich nach einem Tutorial.</p>
<p>* Ein Funktionsobjekt ist ein Objekt welches wie eine Funktion aufgerufen werden kann. Dazu gehören aber nicht Funktionen selbst - diese sind nämlich keine Objekte. Übergibst du einen Funktionsnamen an ein solches STL-Funktionstemplate wird das Argument zu einem Funktionszeiger zerfallen (function to pointer decay).</p>
<p><code>A</code> ist in folgendem Beispiel ein Funktionsobjekt-Typ.</p>
<pre><code>struct A
{
    bool operator()( int a, int b ) const
    {
        return a*7 &gt; b;
    }
};
</code></pre>
<p>Mir fällt gerade auf dass ja der Begriff 'Funktor' genau dasselbe bezeichnen soll wie 'Funktionsobjekt'. Hatte ich ganz tief noch von C++ von A bis Z, glaube ich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409284</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 18 Jul 2014 18:21:50 GMT</pubDate></item></channel></rss>