none
memset einen integer Array RRS feed

  • Frage

  • Hallo,

    ich habe ein integer Array und will es mit einer Zahl ungleich 0 füllen.

    Die for-loop ist langsam, also möchte ich memset benutzen.

    int a[1000];
    for (int i=0; i<1000; i++) a[i] = 0;
    memset(a,0,1000*sizeof(int)); // das ist ok
    for (int i=0; i<1000; i++) a[i] = 5;
    memset(a,5,1000*sizeof(int)); // nicht ok

    Wenn ich das Array mit 0 fülle, arbeitet memset richtig. Aber ich will es mit einer Zahl füllen (z.B. 5). Wenn ich das zweite memset verwende, stehen in dem Array aber nicht 5, sondern eine viel größere Zahl.

    Was mache ich falsch?

    Danke für Hilfe,
    Guido

    Freitag, 30. August 2019 06:10

Antworten

  • Ok, ich hab es bereits rausgefunden. memset setzt byte-weise.

    Ich kann so das Array setzen:

    std::fill(a, a + 1000, 5);

    Gruß, Guido

    • Als Antwort markiert Guido Franzke Freitag, 30. August 2019 08:40
    Freitag, 30. August 2019 08:40