Conversion von Dateitypen
-
Original erstellt von Lars:
Seh ich anders, oder zeig mir mal eine Implementierung bei der Container::size_type != size_t ist.zB meine container (da hab ich manchmal unsigned __int64 als size datentyp (bzw. unsigned long long).
tatsache ist, dass es nicht nur container in der stdlib gibt, und die anderen (sofern sie interface kompatible sind) sollten man doch auch benutzen koennen - schliesslich ist das der sinn von containern, oder?nur sag mir, wo liegt der nachteil bei meiner methode?
-
Original erstellt von Shade Of Mine:
nur sag mir, wo liegt der nachteil bei meiner methode?Mehr Schreibarbeit, schlechtere Lesbarkeit.
-
Original erstellt von Lars:
Mehr Schreibarbeit, schlechtere Lesbarkeit.schreibarbeit?
ein typedef - auch du meine guete, das zaehlt nicht als mehr schreibarbeit!
schlechtere lesbarkeit?size_type size() const;
versus
size_t size() const;was kannst du schlechter lesen?
ich kann beides ohne probleme auf den ersten blick erkennen.nur das size_type nicht verraet was fuer typen ich intern verwende, mit size_t habe ich mich festgelegt und darf nicht auf unsigned long long umsteigen wenn ich es brauche, bei mir muss ich nur ein typedef aendern.
und wenn du sowieso size_type anbietest, als typedef auf size_t, dann sind die beiden varianten sowieso aequivalent (solange der intern verwendete container als size_type size_t hat, wenn nicht dann ist meine variante besser :p)
-
Original erstellt von C14:
**@Dr. Green:
Bla ist Zeiger auf Basisklasse, Serializable ist davon abgeleitet.
Jetzt soll mit dem cast geschaut werden, ob bla auch vom Typ Serializable ist und falls ja gespeichert werden.
**hm.. Aber dann muss ja letztendlich doch jedes speicherbare Objekt von Serializable abgeleitetet sein.
-
Glaust du wirklich das dein Container unsigned __int64 (-1) aufnehmen kann
Ich bezweifele das doch sehr.
[ Dieser Beitrag wurde am 30.06.2003 um 14:43 Uhr von Lars editiert. ]
-
Original erstellt von Lars:
Glaust du wirklich das dein Container unsigned __int64 (-1) aufnehmen kannIch bezweifele das doch sehr.
wie kommst du auf -1 ??
-
Original erstellt von Shade Of Mine:
wie kommst du auf -1 ??representiert den gröstmöglichen Wert.
-
Original erstellt von Lars:
representiert den gröstmöglichen Wert.und? ich sehe immer noch kein problem darin, dass mein container mehr als 4 milliarden eintraege haben kann.
schliesslich muss man auch an die zukunft denken und man muss nicht zwangslaeufig alles im RAM halten - man kann ja auf die festplatte auslagern.
aber size_type muss ja nicht __int64 sein, es kann ja auch char sein - wenn ein container nicht viele elemente beinhalten kann (zB weil es nur eine lookup table darstellen).
sag mir einfach nur mal einen nachteil von meiner methode!
ein typedef mehr schreibarbeit zaehlt nicht!
und ob da jetzt size_t oder size_type steht, ist von der lesbarkeit gleich.
-
Original erstellt von Shade Of Mine:
**ein typedef mehr schreibarbeit zaehlt nicht!
**Doch natürlich. Besonders das Nachschauen, worum es sich denn überhaupt handelt (weil man früher oder später doch casten muss) empfinde ich als Ärgernis.
Das sind die Punkte wo C++ keinen Spaß mehr macht, weil man ständig andere Datentypen hat, obwohl sich hinter den verschiedenen Bezeichnern ohnehin dasselbe verbirgt.
-
Original erstellt von DrGreenthumb:
Doch natürlich. Besonders das Nachschauen, worum es sich denn überhaupt handelt (weil man früher oder später doch casten muss) empfinde ich als Ärgernis.und was ist mit size_t? da hast du das selbe problem...
warum bieten denn die Container der Stdlib ein size_type an? doch sicher nicht zum spass...
warum interessiert es dich ob size_type ein size_t oder unsigned int ist? wo ist fuer dich denn da der unterschied?
casten ist was boeses, ich habe vielleicht 3 casts pro projekt an dem ich arbeite - und da sind diese meistens nur weil ich irgendwo ne C API verwende...
sag mir doch mal schnell ne situation wo es wichtig ist zu wissen ob size_type ein unsigned short oder ein unsigned int ist.