Verschachtelter Vektor
-
Du könntest dir auch eine Klasse Human basteln. Wär viel schöner.

gruß
syntax
-
PuraVida schrieb:
Jede Person soll in einem Vektor stehen. Also z.B. einem Vektor mit 4 Einträgen für Name, Vorname, Alter und Geschlecht.
Nein sollte sie nicht. Eine Person ist eine Person, nicht eine Reihe von Strings. Zumal ein Alter keine Zeichenkette ist, ein Geschlecht auch nicht.
-
pumuckl schrieb:
Zumal ein Alter keine Zeichenkette ist, ein Geschlecht auch nicht.
Was wäre den bei dir Alter und Geschlecht, pumuckl?
-
Gugelmoser schrieb:
pumuckl schrieb:
Zumal ein Alter keine Zeichenkette ist, ein Geschlecht auch nicht.
Was wäre den bei dir Alter und Geschlecht, pumuckl?
naheliegend für das Alter wäre für mich ein unsigned int, sofern "einfache" Altersangaben in Form von Lebensjahren genügen. Für das Geschlecht würde ich wohl ein kleines enum erstellen.
Natürlich kann man beides als string speichern, das zieht nur einen ewigen Rattenschwanz an Fehlerbehandlungen mit sich und sorgt nicht gerade für ein leichtes Verständnis des Codes.
Felix
-
daddy_felix schrieb:
Für das Geschlecht würde ich wohl ein kleines enum erstellen.
Jup, würde ich auch nehmen.
daddy_felix schrieb:
naheliegend für das Alter wäre für mich ein unsigned int, sofern "einfache" Altersangaben in Form von Lebensjahren genügen.
Das würde ich nicht nehmen, oder was willst du mit einem Alter rechnen?
-
Gugelmoser schrieb:
daddy_felix schrieb:
naheliegend für das Alter wäre für mich ein unsigned int, sofern "einfache" Altersangaben in Form von Lebensjahren genügen.
Das würde ich nicht nehmen, oder was willst du mit einem Alter rechnen?
am Geburtstag inkrementieren

-
Gugelmoser schrieb:
daddy_felix schrieb:
naheliegend für das Alter wäre für mich ein unsigned int, sofern "einfache" Altersangaben in Form von Lebensjahren genügen.
Das würde ich nicht nehmen, oder was willst du mit einem Alter rechnen?
Mit einem Alter kann man schon sinnvolle Rechnungen machen, daher ist ein arithmetischer Typ hier absolut naheliegend.
-
SeppJ schrieb:
Gugelmoser schrieb:
daddy_felix schrieb:
naheliegend für das Alter wäre für mich ein unsigned int, sofern "einfache" Altersangaben in Form von Lebensjahren genügen.
Das würde ich nicht nehmen, oder was willst du mit einem Alter rechnen?
Mit einem Alter kann man schon sinnvolle Rechnungen machen, daher ist ein arithmetischer Typ hier absolut naheliegend.
Ok, für mich wäre das jetzt das Gleiche, wie mit einer PLZ gewesen. Und was fallen dir da für sinnvolle Rechnugnen ein, SeppJ?
-
Gugelmoser schrieb:
Was wäre den bei dir Alter und Geschlecht, pumuckl?
Geschlecht das angesprochene Enum, Alter je nach Bedarf ein unsigned int/unsigned long (unterschieliche Semantik denkbar: Jahre, Tage (echt oder Geschäftstage á 30 Tage/Monat), Sekunden?) oder auch eine eigene Datumsklasse.
Gugelmoser schrieb:
Das würde ich nicht nehmen, oder was willst du mit einem Alter rechnen?
Ich schreibe Software für die Lebensversicherungsbranche - da ist das Alter der Versicherten Personen eine der wichtigsten Rechengrundlagen

-
Gugelmoser schrieb:
Ok, für mich wäre das jetzt das Gleiche, wie mit einer PLZ gewesen. Und was fallen dir da für sinnvolle Rechnugnen ein, SeppJ?
Wie alt jemand in 3 Jahren ist. Wie groß der Altersunterschied zweier Personen ist. Wann jemand doppelt so alt ist wie jetzt. In wie vielen Jahren jemand 65 wird. Wer von zwei Personen jünger ist. Wie lange jemand schon volljährig ist. Soll ich weitermachen?
-
Gugelmoser schrieb:
Ok, für mich wäre das jetzt das Gleiche, wie mit einer PLZ gewesen. Und was fallen dir da für sinnvolle Rechnugnen ein, SeppJ?
Die PLZ ist keine Zahl, da...
a) Führende Nullen zulässig sind
b) Wenn man andere Länder berücksichtigt ggf. auch Buchstaben zulässig sind.Dennoch halte ich bei eindeutig nummerischen Werten wie dem Alter (wobei ich eher den Geburtstag speichern, und das Alter herleiten würde), das man auch Nummern verwendet. Und sei es alleine schon, um die Eingaben auf gültige Werte einzuschränken. Man sollte nicht einfach alles als Strings behandeln, wenn andere Datentypen geeigneter sind.
-
Was wäre denn die alternative zu einem numerischen Typ?
boost::posix_time::time_durationoder Vergleichbares könnte ich mir noch vorstellen.
Ist aber auch bloss ein gewrappter "int", bei dem halt nur die Operationen angeboten werden die Sinn machen.
Wobei das schon wieder lästig werden könnte, sobald man irgendwo die Varianz/Standardabweichung o.ä. ausrechnen will.Stellen sich folgende Fragen:
- Was gewinnt man durch eine Wrapperklasse?
- Was kostet es die Wrapperklasse zu erstellen? (u.U. nix, wenn man was fertiges nimmt)
- Was kostet es die Wrapperklasse zu verwenden? (u.U. viel, nämlich wenn man dann dauernd explizit rumkonvertieren muss)
Dann kommt man zu dem Ergebnis dass es sich nicht auszahlt, und lässt es bleiben. Und steckt das Alter stattdessen in nen std::string, weil's ja sowieso immer nur eingegeben und ausgegeben wird
