Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

C++ sort (Library: algorithm) Frage zu den Parametern

Diskussion: C++ sort (Library: algorithm) Frage zu den Parametern im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, ich habe mal eine Frage zu sort in der Bibliothek <algorithm>. sort erwartet als ersten Parameter den Anfang ...

Like Tree1Likes
  • 1 Post By CDW

Antwort
Alt 27.09.11, 11:34   #1 (permalink)
 
Registriert seit: 24.06.11
Clarity Leistung: Z3
Likes: 3
Standard C++ sort (Library: algorithm) Frage zu den Parametern

Anzeige

Hi,

ich habe mal eine Frage zu sort in der Bibliothek <algorithm>.

sort erwartet als ersten Parameter den Anfang des Bereichs der sortiert wird und als zweiten das Ende des Bereichs.
Als dritten Parameter aber kann man eine Sortierfunktion angeben.

Die kann man z.B. einfach so implementieren:

Code:
bool compareObjects(Object obj1, Object obj2)
{
  return obj1.getID() < obj2.getID();
}
Diese kann man dann so übergeben:

Code:
sort(begin, end, compareObjects );
Und das funktioniert auch. Aber warum eigentlich? Warum meckert der Compiler nicht, dass dort bei compareObjects die Klammern fehlen? Und wenn sie schon fehlen dürfen, woher weiß sort dann mit was für Datentypen es umgehen muss?
Clarity ist offline   Mit Zitat antworten
Alt 27.09.11, 13:11   #2 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Klammern:
weil compareObjects() falsch wäre (zum einen würde es Paramter erwarten, die noch gar nicht verfügbar sind, zum anderen würde es vor "sort" Aufruf ausgewertet werden und ein "sort(0,10, true)" macht dann nicht soviel Sinn

Datentypen:
Mit dem Programmnamen übergibst Du eine Referenz/Adresse auf die Funktion. Sort selbst nimmt die Elemente und ruft die Funktion mit diesen auf.
Es (sort) muss nix von den Datentypen wissen, sondern nur stupide "mysort(objX, objY)" aufrufen und die Rückgabe True/False auswerten .

Wie das allgemein intern umgesetzt wird?
K.A - dürfte auf den Compiler ankommen (und ich bin zu faul, nach den ISOs zu suchen und da zu blättern ).
Ein
Code:
void sort(void *buff, sizeblub, sizeblub, bool/int (*comparator_func)(void*, void*){ 
.... irgendwo:  
ret_val=comparator_func(obj1, obj2)...}
dürfte aber sehr wahrscheinlich sein (und zur Not kann man ja was zu "Function Pointern" suchen oder den Sort-Code nachschlagen )
Clarity likes this.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » C++ sort (Library: algorithm) Frage zu den Parametern
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MATLAB C++ Library - Aufruf von Funktion mit optionalen Parametern Thunderb0lt Code Kitchen 2 06.06.11 21:32
Longest path / max flow for single node algorithm jmc Cryptography & Encryption 8 04.12.10 10:52
Algorithm March! -= pillepalle =- Fun Section 2 11.08.07 12:32
Cannot view clients in autofit sort mode. Sort by a different method. Nimda05 WLAN-Zone 3 27.05.06 14:51
ips tracken (sort of) sprengmeister Internet Allgemein 2 03.03.03 22:44


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61