/* swappen, n1 bis mid1 mit mid2 bis n2 */ an dieser Stelle hab ich jetzt das Problem, das wenn ich swappe, Pointer auf n1, n2, mid1 und mid2 nicht mehr stimmen.
in Java nicht wirklich Problem, außer man hält die alte Liste noch aktiv referenziert,
in Normalprogrammen kaum drüber nachzudenken
wenn dann noch Code wie struct node * node = (struct node *) malloc(sizeof(struct node)); dazukommt…,
gibt es irgendeinen Pluspunkt, hier überhaupt C zu lernen?
bisaflor klingt ja nicht gerade wie auf dem Weg, die evtl. vorhandenen x% Performancevorteil gegenüber Java professionell zu nutzen
(sorry )
[ot]
Das kann ausufern, aber ich denke, dass es zumindest nicht schaden kann, zu wissen, was malloc/free machen, was passiert wenn man intPointer += 3 rechnet usw. Und wenn man meint, sich das Leben leichter machen zu können, und auf modernes C++ zurückgreift, und dann sowas wie ::std::shared_ptr<::com::myapp::Node> node; schreiben muss, um das zu haben, was man in Java mit Node node; hat, weiß man Java umso mehr zu schätzen
[/ot]
[OT][quote=SlaterB]gibt es irgendeinen Pluspunkt, hier überhaupt C zu lernen?[/quote]Ja, BigData ist etwas, womit Java Perfoemanz-Probleme hat, die mit C (nicht C++) besser in den Griff zu bekommen sind.[/OT]
bye
TT
nö - Du bist ja in dem Moment im Namespace bar und greifst auf fun() im Namespace foo zu, welcher in Deinem namespace liegt, in dem Du gerade bist. Das wird quasi auf ::bar::foo:fun(); abgebildet.
wieso der Compiler das schluckt ist mir schleierhaft. Nach der obigen Erklärung müsste das auf ::bar::bar::foo:fun(); abgebildet werden. Was nicht existiert. Möglich wäre das der erste Namespace einfach „ignoriert“ wird, da wir in dem Namespace gerade sind. Dann wird aber das Beispiel von Oben auf bar::foo:fun(); abgebildet.
[ot]
Zugegeben, ich hatte es nicht ausprobiert oder anhand der Spec verifiziert, sondern nur zusammengefasst so hingeschrieben, wie ich es aus einem realen Fall in Erinnerung hatte: Normalerweise würde man ja foo::fun() schreiben, um auf foo::fun() zuzugreifen. Da es aber auch ein „lokales“ foo::fun() gibt, muss man mit ::foo::fun() auf das übergeordnete zugreifen. Ich finde das in vieler Hinsicht schlecht…
namespace foo {
void fun() { playFunnyCatVideo(); }
}
namespace bar {
void wtf() {
foo::fun(); // Plays a funny cat video
}
// Added 2 months and 200 lines later by a different author:
namespace foo {
void fun() { killAllKittensWithPoison(); }
}
}
Es ist (wie du auch mit dem "eigentlich… ::bar::bar::foo:fun();" angedeutet hast) einfach recht verwirrend und potentiell Fehleranfällig. Aber das ist ja nur eine von vielen Spitzen von vielen Eisbergen. Sowas wie C++ Frequently Questioned Answers ist recht unterhaltsam und liefert tolle Sprachenbashing-Munition
[/ot]
*** Edit *** @bisaflor Sorry, zu dem OT hab’ ich jetzt sehr viel beigetragen. Wenn es noch etwas zum eigentlichen Thema zu besprechen gibt, trenne ich den OT-Teil mal ab (und vielleicht auch so, morgen, der Ordnung halber)