<?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[vector von pointern sortieren mittels prädikat]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen Vector von pointern auf eine von mir geschiebene Klasse, so ungefähr: vector&lt;myClass *&gt; *myVector</p>
<p>obwohl myClass einen vergleichsoperator enthält sortiert sort die pointer<br />
und nicht mittels meines vergleichsoperators.</p>
<p>Also will ich jetzt ein prädikat definieren, indem ich eine Funktion schreibe:</p>
<pre><code>bool vergleiche(myClass *a, myClass *b)
{
  if(*a &lt; *b ) return true;
  return false;
}

...

void f()
{
   sort(myVector-&gt;begin(),myVector-&gt;end(), vergleiche);
}
</code></pre>
<p>geht aber nicht <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="😞"
    /><br />
kann mir jemand nen tip geben?<br />
Dankeschön.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134739/vector-von-pointern-sortieren-mittels-prädikat</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 16:46:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134739.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Jan 2006 11:09:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:09:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen Vector von pointern auf eine von mir geschiebene Klasse, so ungefähr: vector&lt;myClass *&gt; *myVector</p>
<p>obwohl myClass einen vergleichsoperator enthält sortiert sort die pointer<br />
und nicht mittels meines vergleichsoperators.</p>
<p>Also will ich jetzt ein prädikat definieren, indem ich eine Funktion schreibe:</p>
<pre><code>bool vergleiche(myClass *a, myClass *b)
{
  if(*a &lt; *b ) return true;
  return false;
}

...

void f()
{
   sort(myVector-&gt;begin(),myVector-&gt;end(), vergleiche);
}
</code></pre>
<p>geht aber nicht <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="😞"
    /><br />
kann mir jemand nen tip geben?<br />
Dankeschön.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978754</guid><dc:creator><![CDATA[raphael2]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:09:41 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:11:50 GMT]]></title><description><![CDATA[<p>Willste nicht den Operator &lt; zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978755</guid><dc:creator><![CDATA[??????????]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:12:34 GMT]]></title><description><![CDATA[<blockquote>
<p>geht aber nicht</p>
</blockquote>
<p>Tolle Fehlerbeschreibung. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/978756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978756</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:17:38 GMT]]></title><description><![CDATA[<p>Ok, war doof. Operator kommt gleich</p>
<p>Fehlermeldung: in include algorithm: &quot;term does not evaluate to a function taking 2 arguments&quot;</p>
<p>Und hier die stelle die der compiler moniert:</p>
<pre><code class="language-cpp">template&lt;class _RanIt,
	class _Pr&gt; inline
	pair&lt;_RanIt, _RanIt&gt; _Unguarded_partition(_RanIt _First, _RanIt _Last,
		_Pr _Pred)
	{	// partition [_First, _Last), using _Pred
	_RanIt _Mid = _First + (_Last - _First) / 2;
	_Median(_First, _Mid, _Last - 1, _Pred);
	_RanIt _Pfirst = _Mid;
	_RanIt _Plast = _Pfirst + 1;

	while (_First &lt; _Pfirst
		&amp;&amp; !_Pred(*(_Pfirst - 1), *_Pfirst)
		&amp;&amp; !_Pred(*_Pfirst, *(_Pfirst - 1)))   //***** hier
		--_Pfirst;
	while (_Plast &lt; _Last
		&amp;&amp; !_Pred(*_Plast, *_Pfirst)
		&amp;&amp; !_Pred(*_Pfirst, *_Plast))
		++_Plast;

	_RanIt _Gfirst = _Plast;
	_RanIt _Glast = _Pfirst;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/978761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978761</guid><dc:creator><![CDATA[raphael2]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:22:36 GMT]]></title><description><![CDATA[<p>und hier der operator &lt; ( soll ein lexikographischer vergleich sein)</p>
<pre><code class="language-cpp">bool Coord::operator&lt;(Coord a)
{
	if(_x&lt;a.x()) return true;
	else
	{
		if(_x == a.x() &amp;&amp; _y&lt;a.y()) return true;
		else
			if(_x==a.x() &amp;&amp; _y==a.y() &amp;&amp; _z&lt;a.z()) return true;
	}
	return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/978763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978763</guid><dc:creator><![CDATA[raphael2]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:41:06 GMT]]></title><description><![CDATA[<p>Versuche es mal einfach so:</p>
<pre><code class="language-cpp">struct MyGreater
{
   bool operator()( myClass *a, myClass *b )
   {
      return *a &lt; *b;
   } 
};

std::sort( vec.begin(), vec.end(), MyGreater() );
</code></pre>
<p>Edit: btw wundert es mich das es nicht geht. Eigentlich sollte deine Funktion zum Vergleich genauso funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978770</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:34:04 GMT]]></title><description><![CDATA[<p>Die echte Fehlermeldung des Compilers wäre gut.</p>
<p>Aber versuch mal das:</p>
<pre><code class="language-cpp">bool vergleiche(myClass * const &amp; a, myClass * const &amp; b)
{
  return *a &lt; *b;
}
</code></pre>
<p>Ok, das ist kappes. Hast du vielleicht noch irgendwo ein vergleiche? Was sagt der Compiler zum Typ von _Pred?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978773</guid><dc:creator><![CDATA[Ponto]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:43:10 GMT]]></title><description><![CDATA[<p>MyGreater funktioniert! Vielen Dank an evilissimo und pronto!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978776</guid><dc:creator><![CDATA[raphael2]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:48:26 GMT]]></title><description><![CDATA[<p>evilissimo schrieb:</p>
<blockquote>
<p>Versuche es mal einfach so:</p>
<pre><code class="language-cpp">struct MyGreater
{
   bool operator()( myClass *a, myClass *b )
   {
      return *a &lt; *b;
   } 
};

std::sort( vec.begin(), vec.end(), MyGreater() );
</code></pre>
<p>Edit: btw wundert es mich das es nicht geht. Eigentlich sollte deine Funktion zum Vergleich genauso funktionieren.</p>
</blockquote>
<p>Hallo,</p>
<p>sollte man da nicht von std::binary_function ableiten bzw. first_argument_type etc.. dabeipacken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978778</guid><dc:creator><![CDATA[Konrad]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:55:58 GMT]]></title><description><![CDATA[<p>raphael2 hast du noch die komplette ursprüngliche Fehlermeldung des Kompilers und könntest du diese bitte posten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978786</guid><dc:creator><![CDATA[Ponto]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 11:57:09 GMT]]></title><description><![CDATA[<p>Konrad schrieb:</p>
<blockquote>
<p>evilissimo schrieb:</p>
<blockquote>
<p>Versuche es mal einfach so:</p>
<pre><code class="language-cpp">struct MyGreater
{
   bool operator()( myClass *a, myClass *b )
   {
      return *a &lt; *b;
   } 
};

std::sort( vec.begin(), vec.end(), MyGreater() );
</code></pre>
<p>Edit: btw wundert es mich das es nicht geht. Eigentlich sollte deine Funktion zum Vergleich genauso funktionieren.</p>
</blockquote>
<p>Hallo,</p>
<p>sollte man da nicht von std::binary_function ableiten bzw. first_argument_type etc.. dabeipacken?</p>
</blockquote>
<p>Ich denke nicht dass es notwendig ist einen Funktor von std::binary_function abzuleiten. Sollte ich mich irren lasse ich mich gerne mit Quellenangabe eines besseren belehren <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>BR<br />
evilissimo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978788</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Sat, 28 Jan 2006 11:57:09 GMT</pubDate></item><item><title><![CDATA[Reply to vector von pointern sortieren mittels prädikat on Sat, 28 Jan 2006 19:08:31 GMT]]></title><description><![CDATA[<p>Ich hab mal nachgeguckt und es ist nur nötig, wenn man den Functor mit nem Function adapter benutzen möchte.</p>
<p>Quellenangabe wäre &quot;The C++ Standard Library - A tutorial and reference&quot;, S.310.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/979185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/979185</guid><dc:creator><![CDATA[Konrad]]></dc:creator><pubDate>Sat, 28 Jan 2006 19:08:31 GMT</pubDate></item></channel></rss>