Map mit 2 Werten als value
-
Hallo!
Ich brauche eine Map, die einen Int Key auf einen oder 2 Integers abbildet.
D.h. prinzipiell wuerde das gehen:map<int, vector<int> > m;
vector haette dann als size also IMMER 1 oder 2. Mir erscheint das nur etwas Overkill einen vector zu nehmen, wenn ich eh schon weiss, dass ich nie was anderes als einen oder 2 Werte brauche.
Gibt es da eine bessere Struktur?
-
mappaK schrieb:
Gibt es da eine bessere Struktur?
Jo, std::pair oder Array z.B.
Falls der Value Container aber wissen soll, ob er 1 oder 2 Elemente trägt, solltest du dir wohl eine kleine Klasse schreiben.
-
Boost hat static_vector, der aber auch leer sein kann.
-
mappaK schrieb:
Gibt es da eine bessere Struktur?
Es gibt keine bessere Struktur. Aber ich implementiere Dir mal schnell eine:
struct MyValue { int oneIntegerValue; int otherIntegerValue; };
Sinnvollerweise solltest Du die Bezeichner sinnvoller benennen. Ich weiß ja nicht, was Du damit erreichen willst. Die Alternative mit
pair
hat den Nachteil, dass die Elemente eben nurfirst
undsecond
heissen. Das wird schnell unübersichtlich. Insbesondere weil diemap
ja schon auspair
besteht.
-
tntnet schrieb:
Die Alternative mit
pair
hat den Nachteil, dass die Elemente eben nurfirst
undsecond
heissen.Nichts, was ein Makro nicht flicken kann.
#define oneIntegerValue first #define otherIntegerValue second
-
Herr Makro schrieb:
tntnet schrieb:
Die Alternative mit
pair
hat den Nachteil, dass die Elemente eben nurfirst
undsecond
heissen.Nichts, was ein Makro nicht flicken kann.
#define oneIntegerValue first #define otherIntegerValue second
Und dann hast Du irgendwo im Code:
int oneIntegerValue=24; bool first = true;
Viel Spaß beim Fehlersuchen.