<?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 um eigene Methoden erweitern]]></title><description><![CDATA[<p>Wie kann man einen Vector um eigene Methoden erweitern?</p>
<p>z.B. eine Methode sort() oder get_low() die mir nach einem eigenem Algorithmus ein entsprechendes Element zurückgibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207341/vector-um-eigene-methoden-erweitern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 06:05:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207341.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Mar 2008 11:32:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Thu, 06 Mar 2008 11:32:40 GMT]]></title><description><![CDATA[<p>Wie kann man einen Vector um eigene Methoden erweitern?</p>
<p>z.B. eine Methode sort() oder get_low() die mir nach einem eigenem Algorithmus ein entsprechendes Element zurückgibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469271</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Thu, 06 Mar 2008 11:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Thu, 06 Mar 2008 11:33:51 GMT]]></title><description><![CDATA[<p>cproc schrieb:</p>
<blockquote>
<p>Wie kann man einen Vector um eigene Methoden erweitern?</p>
</blockquote>
<p>Gar nicht. <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/1469272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469272</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 06 Mar 2008 11:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Thu, 06 Mar 2008 11:34:06 GMT]]></title><description><![CDATA[<p>Implementiere eine Non- Member Funktion wie das auch z.B. std::sort(..) tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469273</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 06 Mar 2008 11:34:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Thu, 06 Mar 2008 12:13:12 GMT]]></title><description><![CDATA[<p>oder probier es aus und fall auf den mund <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="🙂"
    /><br />
<em>no virtual d'tor? nevermind. x)</em></p>
<p>ich empfehle dir auch ne globale (template) funktion.<br />
&lt;algorithm&gt; oder auch &lt;iostream&gt; sind nicht umsonst auf globale funktions und operator-überladung ausgelegt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469308</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Thu, 06 Mar 2008 12:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Thu, 06 Mar 2008 15:38:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>gerade für die gegebenen Beispiele wie sort() oder get_low() (der wohl eher mit min_element() denn mit einem Tiefschlag zu tun hat <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="😉"
    /> ) würde ich folgende Reihenfolge vorschlagen:<br />
1.) Vorhandenes nutzen<br />
2.) Vorhandenes nutzen<br />
...<br />
9.) Vorhandenes nutzen<br />
10.) Nonmember-Funktion (<em>) schreiben, die die bestehenden Schnittstellen nutzt (über iteratoren z.B. kann man eigentlich alles über die Elemente herausfinden).<br />
11.) Nonmember-Funktion schreiben, ...<br />
...<br />
99.) Nonmember-Funktion schreiben, ...<br />
100.) Wenn es wirklich sein muss: Ableiten ... und sich den Beschränkungen und Gefahren bewusst sein.<br />
(</em>) &quot;Non-Memberfunktion&quot; kann in diesem Zusammenhang auch eine Memberfunktion einer umgebenen Klasse sein.</p>
<p>Letzteres ist ein Weg, der (zurecht) in Verruf geraten ist .... aber nichtsdestotrotz ein Weg, der manchmal das geringste Übel ist.<br />
Dazu hat Matthew Wilson in &quot;Imperfect C++&quot; ganz Interessante geschrieben.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469500</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 06 Mar 2008 15:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Fri, 07 Mar 2008 07:16:43 GMT]]></title><description><![CDATA[<p>Ok, dann werde ich mich mal intensiver mit Templates auseinandersetzen, Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469776</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Fri, 07 Mar 2008 07:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Fri, 07 Mar 2008 07:29:59 GMT]]></title><description><![CDATA[<p>cproc schrieb:</p>
<blockquote>
<p>Ok, dann werde ich mich mal intensiver mit Templates auseinandersetzen, Danke.</p>
</blockquote>
<p>Hmmmm, das ist aber ein seltsames Fazit, was Du aus diesem Thread ziehst....<br />
Ich hätte mich ja jetzt eher auf std::sort und Iteratoren geworfen.</p>
<p>Aber mach ruhig: Template-Know-How schadet nicht.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469780</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 07 Mar 2008 07:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Fri, 07 Mar 2008 16:45:13 GMT]]></title><description><![CDATA[<p>Naja ich hab ja mehr oder weniger komplexe klassen mit zahlreichen Attributen.<br />
Meine Idee war nun zu Vector eine Methode hinzuzufuegen wie z.b. getmin (ja, nicht getlow :-)).<br />
Bzw. get_low_attr1(), get_low_attr2().</p>
<p>Die Attribute sind von unterschiedlichsten typen wie datetime, AnsiString, char, int usw.<br />
Deshalb wohl Templates.</p>
<p>Ich dachte es waere moeglich:</p>
<pre><code class="language-cpp">vector &lt;TClass&gt; blub;
blub.push(a);
blub.push(b);
blub.get_low_attr1(); // gibt das Objekt mit dem niedrigsten wert bei attr1 zurueck
blub.get_attr1(y); // gibt alle Objekte mit dem wert y bei attr1 zurueck
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1470150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470150</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Fri, 07 Mar 2008 16:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Fri, 07 Mar 2008 22:50:41 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>sorry, das klingt für mich sehr nach einem der o.g. Fälle 1.)-3.) (höchstens).<br />
Außerdem ist es keine gute Idee, die Struktur der Fachdaten mit der des Containers zu verheiraten.</p>
<p>Was spricht gegen:</p>
<pre><code class="language-cpp">vector &lt;TClass&gt; blub;

blub.push_back(a);
blub.push_back(b);
TClass x = get_low_attr1(blub); // gibt das Objekt mit dem niedrigsten wert bei attr1 zurueck
vector&lt;TClass&gt; y = get_attr1(blub); // gibt alle Objekte mit dem wert y bei attr1 zurueck
</code></pre>
<p>?<br />
funktioniert prima und ist sehr stabil gegen Veränderungen von TClass oder die Verwendung eines anderen Containers als vector.</p>
<p>get_low_attr1() ist eigentlich auch nichts anderes als std::min_element(get_attr1()) ... und überhaupt kannst Du Vieles vermutlich sehr einfach mit <a href="http://www.cppreference.com/cppalgorithm/index.html" rel="nofollow">&lt;algorithm&gt;</a> implementieren - falls überhaupt noch eine separate Implementierung notwendig ist. Du kannst z.B. bei copy_if (was wohl Deinem get_attr1() entspricht) einen &quot;Funktor&quot; als Attribut mitgeben, über den Du steuerst, was bei dem jeweiligen Element geprüft werden soll. Ebenso für count_if, find_if, ....</p>
<p>Das meinte ich mit: Schau Dir mal an, wie das in den Standardfunktionen gemacht wird (freie Funktion und Funktor) ... da gibt's vermutlich schon alles, was Du brauchst.</p>
<p>Natürlich denkt JEDER erstmal &quot;Ach, bevor ich mich da eingelesen habe, habe ich das schneller selbst geschrieben !&quot; (typische Programmiererkrankheit <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="😉"
    /> ), aber<br />
a) stimmt das eigentlich NIE; IMMER wird der tatsächliche Aufwand bei sowas unterschätzt - es gibt schon einen Grund, warum sich die Standardlibs seit 8 Jahren durchgesetzt haben. Und:<br />
b) Mit der &quot;selbstgestrickten&quot; Lösung hat man sich üblicherweise einen Haufen Probleme eingehandelt, die einem später in den Hintern beißen (gerade, wenn es um Wartbarkeit geht oder jemand anders den Code übernehmen soll). Und schließlich:<br />
c) Du hast hier die Möglichkeit, etwas wirklich Neues dazuzulernen. Nicht nur die Anwendung Deiner bisherigen Techniken auf ein etwas anders geartetes Problem, sondern neue Konzepte ... und einige davon sind ziemlich cool ! <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="😉"
    /><br />
Denk dran: Man lernt nie aus.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470351</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 07 Mar 2008 22:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Fri, 07 Mar 2008 23:08:24 GMT]]></title><description><![CDATA[<p>Noch ein wichtiger Punkt: Vielleicht ist man beim ersten Mal noch schneller, wenn man sich &quot;mal grad so&quot; was selbst schreibt. Aber es wird nicht das letzte Problem gewesen sein, bei dem die Standardalgorithmen geholfen hätten. Nachdem du die Anwendung dieser einmal gelernt hast, bist du unmenschlich schneller als mit Selbstfrickeln <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/1470364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470364</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 07 Mar 2008 23:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vector um eigene Methoden erweitern on Sat, 08 Mar 2008 10:11:30 GMT]]></title><description><![CDATA[<p>Wauw, muss ich jetzt gestehen dachte ich nicht dass es sowas schon alles fertig gibt :). Gut, ich wusste bis vor einer Woche nicht mal das es Vectoren gibt, geschweige was Sie sind.<br />
Danke für die Infos, werd mich mal im Verlauf der nächsten 2 Wochen erst mal einlesen und rumprobieren bevor ich wieder nach einer Antwort schrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470429</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Sat, 08 Mar 2008 10:11:30 GMT</pubDate></item></channel></rss>