Wie bereits erwähnt, kopiert die memset
63 Bytes in jedes Byte des Arrays. Deshalb sind Ihre Zahlen nicht das, was Sie erwarten. Sie sollten auch versuchen, memset
und memcpy
in C++ zu vermeiden und nur verwenden, wenn Sie sicher sind, dass die kopierten Objekte PODs oder Standard-Layout-Typen sind. Das Kopieren allgemeiner C++ - Objekte kann sehr problematisch sein, und das Speichern von Objekten ist ein Rezept für Katastrophen.
Eine Alternative zu std::fill
, die völlig in Ordnung ist, ist, keine reinen C-Arrays zu verwenden. Verwenden Sie stattdessen entweder std::vector<long long>
oder std::array<long long, N>
.
std::vector<long long> v(10, 63);
Zum Erstellen eine statisch zugewiesenen Array von 10 Elementen mit dem Wert 63
std::array<long, long, 10> a;
a.fill(63);
PS::
Um einen Vektor von 10 Elementen mit dem Wert 63 zu erzeugen versuchen, nicht #define
für typedefs zu verwenden oder Konstanten oder Inline-Funktionen. C++ hat typsichere Ersetzungen für die meisten C-Konstrukte.
Die Array-Elemente sind vom Typ 'long long',' memset() 'füllt den Speicher auf Zeichenebene. –
Verwenden Sie 'for (size_t i = 0; i