<?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[Kurze Frage zu std::lower_bound]]></title><description><![CDATA[<p>Hallo, in meinem Projekt habe ich eine Klasse definiert (ungefähr so):</p>
<pre><code class="language-cpp">class C
{
   int member1;
   int member3;
};
</code></pre>
<p>Jetzt habe ich einen vector mit Elementen von C. Dieser Vector soll ständig nach member 1 sortiert sein, also habe ich ihn gekapselt. Wenn ein neues Element in den vector eingefügt wird, soll natürlich nicht der ganze vector umsortiert werden (daher lower_bound)</p>
<pre><code class="language-cpp">bool pred(const C&amp; a, const C&amp; b)
{
    return a.get_member1() &lt; b.get_member1();
}
class Cs
{
    std::vector&lt;C&gt; vec;
   public:
    void add(const C&amp; c)
    {
        std::vector&lt;C&gt;::iterator it = std::lower_bond(vec.begin(), vec.end(), c.get_member1(), pred);
        vec.insert(it, c);
    }
};
</code></pre>
<p>Allerdings bekomme ich dieses Beispiel nicht ans laufen: Da, wo die ?? in der Parameterliste stehen, erwartet lower_bound ja einen Wert vom Typ &quot;C&quot; und nicht vom Typ &quot;int&quot; (für member1).<br />
Wie löse ich dieses Problem? Muss ich hier ein Dummy Object vom Typ C erstellen, bei dem nur der &quot;member1&quot; wert gesetzt ist???</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288846/kurze-frage-zu-std-lower_bound</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 16:12:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288846.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Jun 2011 22:08:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kurze Frage zu std::lower_bound on Thu, 23 Jun 2011 22:08:32 GMT]]></title><description><![CDATA[<p>Hallo, in meinem Projekt habe ich eine Klasse definiert (ungefähr so):</p>
<pre><code class="language-cpp">class C
{
   int member1;
   int member3;
};
</code></pre>
<p>Jetzt habe ich einen vector mit Elementen von C. Dieser Vector soll ständig nach member 1 sortiert sein, also habe ich ihn gekapselt. Wenn ein neues Element in den vector eingefügt wird, soll natürlich nicht der ganze vector umsortiert werden (daher lower_bound)</p>
<pre><code class="language-cpp">bool pred(const C&amp; a, const C&amp; b)
{
    return a.get_member1() &lt; b.get_member1();
}
class Cs
{
    std::vector&lt;C&gt; vec;
   public:
    void add(const C&amp; c)
    {
        std::vector&lt;C&gt;::iterator it = std::lower_bond(vec.begin(), vec.end(), c.get_member1(), pred);
        vec.insert(it, c);
    }
};
</code></pre>
<p>Allerdings bekomme ich dieses Beispiel nicht ans laufen: Da, wo die ?? in der Parameterliste stehen, erwartet lower_bound ja einen Wert vom Typ &quot;C&quot; und nicht vom Typ &quot;int&quot; (für member1).<br />
Wie löse ich dieses Problem? Muss ich hier ein Dummy Object vom Typ C erstellen, bei dem nur der &quot;member1&quot; wert gesetzt ist???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2082942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2082942</guid><dc:creator><![CDATA[SortierenGehtNicht]]></dc:creator><pubDate>Thu, 23 Jun 2011 22:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu std::lower_bound on Thu, 23 Jun 2011 22:13:58 GMT]]></title><description><![CDATA[<p>Du hast doch bereits ein Element vom Typ C verfügbar, das du als Vergleichswert an den Algorithmus übergeben kannst - was hindert dich daran, das zu verwenden:</p>
<pre><code class="language-cpp">std::vector&lt;C&gt;::iterator it = std::lower_bond(vec.begin(), vec.end(), c, pred);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2082944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2082944</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 23 Jun 2011 22:13:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu std::lower_bound on Thu, 23 Jun 2011 22:32:17 GMT]]></title><description><![CDATA[<p>Hm, das stimmt natürlich <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="😃"
    /><br />
Anscheinend hab ich noch ein bisschen Probleme, mich in das Konzept von C++ einzulesen.<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2082953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2082953</guid><dc:creator><![CDATA[SortierenGehtNicht]]></dc:creator><pubDate>Thu, 23 Jun 2011 22:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu std::lower_bound on Fri, 24 Jun 2011 06:01:40 GMT]]></title><description><![CDATA[<p>Falls Du so ein Objekt nicht hast, was auch öfter mal vorkommt, kannst du so ein Predicate verwenden:</p>
<pre><code class="language-cpp">struct Member1Less
{
  bool operator(const C&amp; lh, const C&amp; rh) const; // wie bisher
  bool operator(const C&amp; lh, int rh) const;
  bool operator(int lh, const C&amp; rh) const;
};
</code></pre>
<p>Damit kannst du ein C auch mit einem int vergleichen.<br />
Bei <code>std::lower_bound&lt;Iter, T, Pred&gt;</code> ist <code>T</code> nämlich nicht unbedingt gleich <code>Iter::value_type</code> . Es muss nur irgendetwas sein, womit ich <code>Pred::operator()</code> aufrufen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083011</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Fri, 24 Jun 2011 06:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu std::lower_bound on Fri, 24 Jun 2011 09:34:31 GMT]]></title><description><![CDATA[<p>Ah, das wusste ich noch garnicht! Danke für den Tipp!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083073</guid><dc:creator><![CDATA[SortierenGehtNicht]]></dc:creator><pubDate>Fri, 24 Jun 2011 09:34:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage zu std::lower_bound on Mon, 27 Jun 2011 09:52:07 GMT]]></title><description><![CDATA[<p>Guck dir mal std::priority_queue an, vielleicht hilft dir das ja weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2084684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2084684</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 27 Jun 2011 09:52:07 GMT</pubDate></item></channel></rss>