Variable mit besonderem Namen generieren
-
hewi schrieb:
Läuft der Vorschlag von asc mit dem Vector auf was anderes hinaus?
Jopp. Bei einem Vektor gibt's immer eine bestimmte Anzahl an Elementen, und die sind der Reihe nach durchnummeriert. D.h. das erste Element spricht man über [0] an, das zweite über [1] und das letzte über [N-1] (bei N Elementen). Bei einer map (auch als Dictionary bekannt), kannst du beliebige "Indizes" verwenden. D.h. du kannst sagen nur bei "Index" 0, 7 und 1000 gibt's ein Element, sonst nirgends. Dann existieren auch nur diese drei Elemente, "dazwischen" ist dann nichts. Den "Index" nennt man dabei üblicherweise "key" (Schlüssel), und das Element wird als "value" (Wert) bezeichnet.
Kann man vorher abprüfen, ob das Element schon angelegt ist.
Ja, kann man.
-
Hallo hustbaer und vielen Dank,
wenn also durch den Programm-Ablauf die Variablen folgende Werte erhalten:
cc=3, hh=4, ll=5 (die Werte können zwischen 0 und 9 schwanken) kann man
mit dem map folgende Variable m[345] anlegen und füllen.
In der richtigen Anwendung wäre es dann m[123456789...].
Wenn man dann nur 8000 Werte hat belastet das dann den Speicher nur mit den 8000 Werten? Das wäre dann schon gut.Über die Vereinbarung
---------------------------------------------------------
C/C++ Code:
std::map<int, int> m;
m[1] = 123;
m[100000] = 5;
// ... 8000 werte an beliebigen positionen (mit beliebigen keys)int i = m[100000]; // holt die 5 wieder raus
Als Key musst du dabei nicht einen Integer verwenden:
C/C++ Code:
std::map<boost::tuble<int, int, int>, int> m;
m[boost::make_tuple(1, 2, 3)] = 123;
m[boost::make_tuple(1000, 12, 10101013)] = 666;
// ...
C/C++ Code:
std::map<boost::tuble<int, int, int>, int> m;
m[boost::make_tuple(1, 2, 3)] = 123;
m[boost::make_tuple(1000, 12, 10101013)] = 666;
// ...
C/C++ Code:
std::map<boost::tuble<int, int, int>, int> m;
m[boost::make_tuple(1, 2, 3)] = 123;
m[boost::make_tuple(1000, 12, 10101013)] = 666;
// ...
-------------------------------------------------------------
muß ich mir jetzt noch Gedanken machen - hab ich noch nie gesehenMit bestem Gruß
hewi
-
hewi schrieb:
Wenn man dann nur 8000 Werte hat belastet das dann den Speicher nur mit den 8000 Werten? Das wäre dann schon gut.
Das ist etwas vom Container abhängig, aber im wesentlichen kannst du annehmen das der Overhead im Verhältnis eher gering ist.
cu André