Array von Enums mit Standardwert füllen
-
Hallo ich habe eine Array von Enums
ETEST eArray[5];Und würde dies nun gerne mit dem Enumwert EVAL1 befüllen. Ich hab es mit der memset Funktion versucht, aber es geht nicht.
memset(eArray, ETEST::EVAL1 , 5 * sizeof(int));Wie bekomm ich das hin? Danke für Hilfe!
-
Als Ersatz für memset gibt es in C++ die Algorithmen fill und fill_n, zu finden in <algorithm>
std::fill_n(eArray, 5, ETEST::EVal1); // oder, dynamischer: std::fill_n(eArray, sizeof(eArray)/sizeof(eArray[0]), ETEST::EVal1);BTW:
Das "geht" mit memset sehr wohl, es kommt nur nicht das erwartete Ergebnis raus.
(EDIT: Dies ist ein dezenter Hinweis darauf, dass Du, wohl aufgrund eines bedauerlichen Irrtums, vergessen hast zu beschreiben wie "geht nicht" sich denn äußert).
-
memset arbeitet byteweise - bei größeren Objekten funktioniert das bestenfalls mit 0-Werten (oder wenn das Bitmuster periodisch ist). Aber versuch' mal std::fill() bzw. std::fill_n() (oder befüll das Array direkt über die Initialisierungsliste).
-
was spricht gegen:
ETEST eArray[5] = {ETEST::EVAL1};?
-
ETEST eArray[5] = {ETEST::EVAL1};Ist es nicht so, dass dabei, dass erste Element auf ETEST::EVAL1 gesetzt wird und die anderen auf 0?
Solange EVAL1 == 0 ist geht das, aber hierbei müsste das Probleme geben:enum ETEST { EVAL1 = 4 };Oder irre ich mich?
Gruß
Don06
-
Don06 schrieb:
ETEST eArray[5] = {ETEST::EVAL1};Ist es nicht so, dass dabei, dass erste Element auf ETEST::EVAL1 gesetzt wird und die anderen auf 0?
Solange EVAL1 == 0 ist geht das, aber hierbei müsste das Probleme geben:enum ETEST { EVAL1 = 4 };Oder irre ich mich?
ne, hast scho recht, hab das garnicht bedacht da ich sonst immer den default value auf 0 mappe.