2 dimensionalerr vector mit untersch. Datentyp
-
Hallo zusammen,
ich möchte mehreren Uhrzeiten jeweils einen Bool-Wert zuordnen.
Ich habe mir gedacht, dass könnte ich am einfachsten mit einem 2 Dim.Vector machen, nur dazu muss der ja einmal den Datentyp int(für die Uhrzeit) und einmal den Datentyp Bool annehmen?
Kann mann das machen, oder gibt es vielleicht eine elegantere Möglichkeit?Danke für Eure Hilfe!
-
Z. B. mit std::map<int, bool>.
Am besten mal in die map einlesen, ist ein klein wenig anders als ein vector, aber für deinen Einsatzzweck wahrscheinlich die einfachste Möglichkeit
-
wow, das ging ja schnell.
vielen dank, werde gleich mal googeln.
-
Hmm ich bin mir nicht sicher ob ich das richtig verstehe.
Du hast eine uhrzeit, meinetwegen vom type time_t und dieser uhrzeit möchtest du noch einen boolschen wert zu ordnen ?
Dann kannst du das entweder in eine struktur packen ala.
struct some_struct{ time_t tim_; bool true_false_; };
Und dann eben nen vector<some_struct>.
Du könnstest auch ein std::pair nehmen. Das ist im prinzip das gleich wie die struktur nur dass der erste wert first heisst und der zweite secondstd::vector<std::pair<time_t,bool> > myvec; //einfügen myvec[0].first; //<--- uhrzeit myvec[0].second; //<--- bool
Wenn ichs falsch verstanden hab und du brauchst entweder uhrzeit oder boolschen wert, dann eignet sich eine union ganz gut dafür.
union some_union{ time_t tim_; bool true_false_; }; some_union un; un.tim_=get_time_from_somewhere(); //oder un.true_false_=true;
Die union ist platzsparender aber bei den kleinen werten macht sich das erst ab ner großen menge bemerkbar.
-
prolog schrieb:
union some_union{ time_t tim_; bool true_false_; }; some_union un; un.tim_=get_time_from_somewhere(); //oder un.true_false_=true;
Die union ist platzsparender aber bei den kleinen werten macht sich das erst ab ner großen menge bemerkbar.
Wie funktioniert denn das, dass man time_t und bool ohne Beeinflussung in einem Union speichert?
EDIT:
prolog schrieb:
Wenn ichs falsch verstanden hab und du brauchst entweder uhrzeit oder boolschen wert, dann eignet sich eine union ganz gut dafür.
Hab mich verlesen
-
masterofx32 schrieb:
Wie funktioniert denn das, dass man time_t und bool ohne Beeinflussung in einem Union speichert?
Gar nicht. Er hat nur den OP richtig (falsch?) verstanden.
edit:masterofx32 schrieb:
Wenn ichs falsch verstanden hab und du brauchst entweder uhrzeit oder boolschen wert, dann eignet sich eine union ganz gut dafür.
-
danke schonmal,
also,
ich möchte einer Uhrzeit einen bool-Wert zuweisen.
Ich habe schoon den Vorschlag mit der map bekommen, aber die Lösung mit der structure gefällt mir auch sehr gut....+++
-
wie kann ich dann die einzelnen elemente (zeit,besetzt) in einem vector ansprechen?
so?:
struct zeit_besetzt
{
int zeit;
bool besetzt
}
vector <zeit_besetzt> besetztbesetzt(1).besetzt=true;
besetzt(1).zeit=10;danke für Eure Antworten
-
std::vector überläd den op[] für solche sachen.
std::vector<zeit_besetzt> vec; //was einfügen vec[0].besetzt=true;
Wenn du allerdings später schnell nachschauen willst, welche zeiten besetzt sind, dann eignet sich eine map u.U. besser.