|
|
|
|
Hm, ich verstehe nicht ganz, was du damit meinst - soll f ein Funktionszeiger sein?
|
|
|
|
|
|
|
Ja. ein JavaScript-Beispiel:
|
Code: |
[1,2,3].map(function( element){
return element * 2;
}) //=> [2,4,6]
|
|
|
|
|
|
|
|
|
Naja, es ist ja explizit ein Funktor gefordert und in der Vorlesung wurden keine Funktionszeiger behandelt, von daher gehe ich davon aus, dass Funktionszeiger nicht gemeint sind - das ist ja mein Dilemma. :/
|
|
|
|
|
|
|
OH MEIN GOTT! EIGENSTÄNDIGES LERNEN!
woher sollte man das auch beherrschen.
|
|
|
|
|
|
|
Ich habe keine Probleme mit Funktionszeigern, danke...
Aber die Aufgabe fordert nunmal einen Funktor keinen Funktionszeiger.
|
|
|
|
|
|
|
Waren Funktoren nicht sowas wie class foo { operator()() }; ?
--e
http://de.wikipedia.org/wiki/Funktor_(Informatik)#Funktionsobjekte
Sag ich ja
Also sollst du vermutlich ne Baseclass für Funktoren für Vektoren bereitstellen und eine Funktion die einen Baseclass* akzeptiert. Und ausführt. Auf das Objekt. Ooooder umgekehrt, also das der Funktor den Vector als Ref kriegt.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 20.01.2012 0:14]
|
|
|
|
|
|
Okay, ich hab jetzt noch einmal drüber nachgedacht und hab den Satz so interpretiert, dass meiner Klasse ein Funktor übergeben werden können soll, und dass Ergebnis eben die Einträge modifiziert.
Also etwa so:
|
Code: |
class Functor
{
public:
Functor(int _n) : n(_n) {};
int operator()() { return n + 3; };
private:
int n;
};
template <class T, int N> template <class functorT>
void Vektor<T, N>::callback(functorT func, int i)
{
entries[i] = func();
}
|
|
Das würde dann meinem Eintrag "i" das Ergebnis des Funktors zuweisen. Die Funktion habe ich dann noch einmal überladen, so dass sie nur einen Funktor erwartet und das Ergebnis dann allen Einträgen zuordnet.
|
|
|
|
|
|
|
In Ermangelung von C++ Kentnissen: So sähe das in Java aus:
|
Code: |
interface Operator<T> {
public T apply(T item);
}
/* eine konkrete operation davon */
class AddTwo implements Operator<Integer> {
public Integer apply(Integer item) {
return item + 2;
}
}
class Vektor<A> {
//...
public void map(Operator<A> operator) {
for(int i = 0; i < this.length(); i++) {
// apply operator
A tmp = operator.apply( this.get(i) );
this.set(i, tmp)
}
//..
}
|
|
/: Hier ist ein Beipiel aus einer richtigen Bibliothek: http://docs.guava-libraries.googlecode.com/git-history/v11.0.1/javadoc/index.html
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Achsel-des-Bösen am 20.01.2012 10:22]
|
|
|
|
|
|
| Zitat von AcidF!re
Das würde dann meinem Eintrag "i" das Ergebnis des Funktors zuweisen. Die Funktion habe ich dann noch einmal überladen, so dass sie nur einen Funktor erwartet und das Ergebnis dann allen Einträgen zuordnet.
| |
Wenn du das jetzt noch so modifizierst, dass der Funktor einen Parameter erwartet und das Ergebnis zurück liefert, sollte es das sein. Dann kann der Nutzer deiner Vektor Klasse einen beliebigen Funktor erzeugen und an dein map übergeben.
Ich persönlich benutzte map (und auch reduce) übrigens sehr häufig
|
|
|
|
|
|
|
Japp. So haette ich das auch verstanden: Funktor mit Typ int -> int (oder T -> T, je nachdem was du in deinem Vektor speicherst).
Randbemerkung: Mit C++-Templates brauchst du die "Operator"-Basisklasse aus Achsels Beispiel nicht. Sowas wie
|
Code: |
struct myfunctor {
int operator()(int x) { return x * x; }
};
|
|
reicht, dass das Ding den benoetigten ()-Operator hat kriegt der Template-Mechanismus selbst raus.
|
|
|
|
|
|
|
Meine Erkenntnis des Tages: es gibt eine englischsprachige Entsprechung des deutschen JWD (= janz weit draußen): BFE (= bum fuck egypt).
|
|
|
|
|
|
|
Gibt es eigentlich irgendwleche C++-lernen -Bücher für Leute wie mich? Etwas das auf "Was ist eigentlich eine Klasse" und "Wie kaut man dieses 'Polymorphie'" oder "Ze fuck...Pointer?" verzichtet?
|
|
|
|
|
|
|
Für die technischen Details und Fußangeln hat mir fast immer http://www.parashift.com/c++-faq-lite/ ausgereicht, die Jungs haben auch ein Buch zum Thema veröffentlicht (das ich allerdings nicht kenne). Kann sein, dass dir das schon ausreicht.
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
Gibt es eigentlich irgendwleche C++-lernen -Bücher für Leute wie mich? Etwas das auf "Was ist eigentlich eine Klasse" und "Wie kaut man dieses 'Polymorphie'" oder "Ze fuck...Pointer?" verzichtet?
| |
Wobei Pointer ja eigentlich nicht mehr viel mit C++ zu tun haben, oder?
|
|
|
|
|
|
|
das is ja sein punkt, oder? er will die grundlagen der imperativen programmierung und oo nicht zum drölften mal lesen, sondern was, das darauf aufbauend c++ erklärt.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von flying sheep am 20.01.2012 11:26]
|
|
|
|
|
|
| Zitat von igor]2
Meine Erkenntnis des Tages: es gibt eine englischsprachige Entsprechung des deutschen JWD (= janz weit draußen): BFE (= bum fuck egypt).
| |
AMA?
|
|
|
|
|
|
|
was mich interessieren würde: wenn ich c++ lernen will, lohnt es sich, gleich in c++11 einzusteigen, oder gibt es da nachteile (im bezug auf tools, inkompatibilitäten, usw., nicht lernaufwand)
weiterhin: sehe ich das richtig, dass Qt im grunde einen haufen datenstrukturen mitbringt, ich also ein nicht-qt-projekt mit listen- und hashmapimplementierungen w und x und ein qt-projekt mit den implementierungen Qy und Qz aufziehe?
also qt-code zur debug-ausgabe einer liste wäre z.b.
|
Code: |
QLinkedList<QString> list;
...
QString str;
foreach (str, list) {
qDebug() << str;
} |
|
und ohne qt
|
Code: |
std::vector::vector<std::string> list;
...
for(const str& item : list) {
//wasweißich
} |
|
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von flying sheep am 20.01.2012 11:48]
|
|
|
|
|
|
Mega(Upload|Video) jetzt also down.
An sich ja keine echte Überraschung. Was mich nur immer wieder überrascht: Kinderpornos kann keiner entfernen (Sinngemäß und polemisch zusammengefasst ). Geschweige denn abschalten. Aber Wirtschaftskriminelle Filehoster kann man in 8 Ländern gleichzeitig festsetzen und verhaften lassen. Ja klar
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
| Zitat von AcidF!re
Das würde dann meinem Eintrag "i" das Ergebnis des Funktors zuweisen. Die Funktion habe ich dann noch einmal überladen, so dass sie nur einen Funktor erwartet und das Ergebnis dann allen Einträgen zuordnet.
| |
Wenn du das jetzt noch so modifizierst, dass der Funktor einen Parameter erwartet und das Ergebnis zurück liefert, sollte es das sein. Dann kann der Nutzer deiner Vektor Klasse einen beliebigen Funktor erzeugen und an dein map übergeben.
Ich persönlich benutzte map (und auch reduce) übrigens sehr häufig
| |
Ich hatte jetzt leider keine Zeit mehr, das vor der Abgabe zu modifizieren - aber ich werde mir das zu Hause noch einmal anschauen.
| Zitat von flying sheep
was mich interessieren würde: wenn ich c++ lernen will, lohnt es sich, gleich in c++11 einzusteigen, oder gibt es da nachteile (im bezug auf tools, inkompatibilitäten, usw., nicht lernaufwand) | |
Abgesehen davon, dass noch kein Compiler C++11 komplett unterstützt (was ja nicht verwunderlich ist, der neue Standard ist ja noch jung)?
¤: Wie kam ich darauf einen quote tag mit einem url tag schließen zu wollen?
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von AcidF!re am 20.01.2012 12:04]
|
|
|
|
|
|
| Zitat von AcidF!re
| Zitat von flying sheep was mich interessieren würde: wenn ich c++ lernen will, lohnt es sich, gleich in c++11 einzusteigen, oder gibt es da nachteile (im bezug auf tools, inkompatibilitäten, usw., nicht lernaufwand) | | Abgesehen davon, dass noch kein Compiler C++11 komplett unterstützt (was ja nicht verwunderlich ist, der neue Standard ist ja noch jung)? | | ja, sowas meinte ich…
andererseits werden ja die interessanten features unterstützt, also ist das nicht so schlimm.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von flying sheep am 20.01.2012 12:07]
|
|
|
|
|
|
Also prinzipiell wüsste ich nicht, warum man sich nicht gleich C++11 mit aneignen sollte - fundamental anders wird die Sprache ja durch den neuen Standard auch wieder nicht, imho.
|
|
|
|
|
|
|
|
|
|
|
Naja, kann man ja nicht direkt vergleichen. Ich persönlich würde mir jetzt beispielsweise auch vorab und ohne Not kein reines C(++) aneigenen, einfach weil mich diese Low-Level-Entwicklung (bzw. hardware-nahe Entwicklung) nicht interessiert und ich damit bestenfalls im Berufsleben auch nichts zu tun haben möchte.
Mich interessiert eher auf die Entwicklung auf Service-Ebene wo man bestenfalls nur Komponenten orchestriert und sich über algorithmische Details wenig bis keine Gedanken machen muss.
Entsprechend interessieren mich eher Java, C# und co.
|
|
|
|
|
|
|
|
|
|
|
Ich muss endlich mal meine Dissertationsidee formulieren. Werde die dann auch mal hier im Salat präsentieren, um festzustellen, ob das was ich mir da ausgedacht habe auch wirklich sinnvoll ist.
Aber die göttlichen () Zeichen dafür sind eigentlich ziemlich positiv, so dass das eigentlich klappen müsste. Just in dieser Woche haben nämlich Facebook und Microsoft Research Dinge bekanntgegeben, die in die Thematik reinspielen.
Doof an der Idee ist lediglich, dass es dazu noch rein gar nichts gibt. Also wirklich gar nix. Klar, eine Dissertation soll was Neues erschaffen. Aber meistens gibt es ja doch immer gewisse Vorarbeiten.
Naja mal gucken.
* * *
Sonntag Abend kommt endlich meine neue Mitbewohnerin. Da bin ich ja auch schon gespannt.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von TriggerTG am 20.01.2012 13:31]
|
|
|
|
|
|
ich kanns, aber ich mag python und JS als skriptsprachen lieber.
komm damit wieder, wenn perl 6 final ist, ok?
|
|
|
|
|
|
|
|
|
|
|
Btw., ich frage mich echt wie ich es in meiner Jugend so oft ausgehalten habe, den Rechner über Nacht laufen zu lassen (weiß auch gar nicht mehr warum eigentlich).
Heute Nacht musste ich die Kiste anlassen, da ich einen 50gb-Truecrypt-Container in meine neue Online-Backup-Cloud geschoben habe. Scheiße ist die Kiste laut
|
|
|
|
|
|
|
|
|
|
|
Tag zusammen!
Mit Rechner an konnte ich noch nie schlafen, ob jetzt oder früher. Irgendwann hab ich sogar das Fiepen von den Spulen gehört, was mich weiter wachgehalten hat
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |