john 0 erklaert C++ casts
-
@john-0 Warum sollte man einen Standard-Container nachbauen wollen? Gerade die Container sind im Gegensatz zu den Strings oder StreamStreams sogar sehr performant und konnten zumindest meine Bedürfnisse bis jetzt immer erfüllen.
-
@It0101 sagte in john 0 erklaert C++ casts:
@john-0 Warum sollte man einen Standard-Container nachbauen wollen?
Genau das war aber das Thema des Threads aus dem mein Posting ausgelagert wurde.
Ist es sinnvoll? Nein, da wirst Du von mir keinen Widerspruch hören. Es ist sinnvoll einen Container einmal selbst implementiert zu haben – möglicherweise.
-
@john-0 sagte in john 0 erklaert C++ casts:
@It0101 sagte in john 0 erklaert C++ casts:
@john-0 Warum sollte man einen Standard-Container nachbauen wollen?
Genau das war aber das Thema des Threads aus dem mein Posting ausgelagert wurde.
Ist es sinnvoll? Nein, da wirst Du von mir keinen Widerspruch hören. Es ist sinnvoll einen Container einmal selbst implementiert zu haben – möglicherweise.
Klar macht das Sinn, wenigstens einmal eine Container-Struktur gebaut zu haben. Nicht unbedingt weil man viel über Iteratoren lernt, sondern weil man was über das saubere Arbeiten mit Speicher, Pointern, Speicherblöcken usw. lernt.
Das Wissen kann man allerdings auch anderswo aufsammeln. Z.B. wenn man mit Sockets arbeitet und Protokolle entwirft. Aber ich stimme dir zu: Es schadet nicht, es mal gemacht zu haben.
-
@It0101 sagte in john 0 erklaert C++ casts:
Warum sollte man einen Standard-Container nachbauen wollen?
Vielleicht, weil man bestimmte Eigenschaften ausnutzen will - z.B. wenn man nur über die Daten weiß, dass man sie relocaten kann und die Werte einfach im Speicher rumgeschoben werden können, ohne Konstruktoren aufrufen zu müssen? So ein Container für PODs ohne interne Pointer zum Beispiel. Da kann man beim resizen z.B. realloc verwenden, wenn man will. Oder auch memcopy anstatt Konstruktoren und Destruktoren aufzurufen. std::vector ist voll generisch und muss all diese Spezialfälle abdecken. Wenn man darauf verzichten kann, kann man u.U. besser sein.
-
@wob sagte in john 0 erklaert C++ casts:
@It0101 sagte in john 0 erklaert C++ casts:
Warum sollte man einen Standard-Container nachbauen wollen?
Wenn man darauf verzichten kann, kann man u.U. besser sein.
Ja, aber das sind Spezialfälle. Für 99% aller Anwendungenm kommt man mit den STL-Containern. Beim STL-String und beim Stringstream sehe ich da schon eher "Neuimplementations-Fälle".
-
@It0101 sagte in john 0 erklaert C++ casts:
Dann kommt "eigenartig" aus dem Urlaub zurück und sagt: "ja ich fand C-style-Casts viel hübscher. That's my style bitches!".
Find ich auch immer noch. Ich schreib halt keine Fehler was das angeht
@Swordfish sagte in john 0 erklaert C++ casts:
weil?
Code Smell.
-
@eigenartig sagte in john 0 erklaert C++ casts:
Find ich auch immer noch. Ich schreib halt keine Fehler was das angeht
@eigenartig sagte in john 0 erklaert C++ casts:
Code Smell.
weil?
-
-
@It0101 sagte in john 0 erklaert C++ casts:
@john-0 Warum sollte man einen Standard-Container nachbauen wollen? Gerade die Container sind im Gegensatz zu den Strings oder StreamStreams sogar sehr performant und konnten zumindest meine Bedürfnisse bis jetzt immer erfüllen.
Ein einfaches Beispiel die std::map hat für die Methode insert oder count O(log(n)) Laufzeit.
Jetzt brauchst du eine Datenstruktur die es in O(1) count ausführt und O(n) Laufzeit einfügen kann und das im Worst Case.Was würdest du dann tun ?
-
@pmqtt sagte in john 0 erklaert C++ casts:
@It0101 sagte in john 0 erklaert C++ casts:
@john-0 Warum sollte man einen Standard-Container nachbauen wollen? Gerade die Container sind im Gegensatz zu den Strings oder StreamStreams sogar sehr performant und konnten zumindest meine Bedürfnisse bis jetzt immer erfüllen.
Ein einfaches Beispiel die std::map hat für die Methode insert oder count O(log(n)) Laufzeit.
Jetzt brauchst du eine Datenstruktur die es in O(1) count ausführt und O(n) Laufzeit einfügen kann und das im Worst Case.Was würdest du dann tun ?
Ich sag ja nicht, dass man NIE Container selber schreiben sollte. Es gibt Ausnahmen, da macht das Sinn. Ich hatte diese Ausnahme bisher nur seeeehr selten.
Ich hab mir auch nen Puffer selber gebaut, weil mir eben der STL-String zu langsam war. Ist halt manchmal notwendig.