63 votes

Comment initialiser un tableau dynamique en C ++?

Comment puis-je obtenir l'équivalent dynamique de cette initialisation de tableau statique:

 char c[2] = {};  // Sets all members to '\0';
 

En d’autres termes, créez un tableau dynamique avec toutes les valeurs initialisées avec le caractère de fin:

 char* c = new char[length]; // how do i amend this? 
 

114voto

Fred Points 636
char* c = new char[length]();

33voto

Steve Jessop Points 166970

Deux manières:

 char *c = new char[length];
std::fill(c, c + length, INITIAL_VALUE);
// just this once, since it's char, you could use memset
 

Ou:

 std::vector<char> c(length, INITIAL_VALUE);
 

À ma deuxième manière, le deuxième paramètre par défaut est déjà 0, donc dans votre cas, il est inutile:

 std::vector<char> c(length);
 

[Edit: allez voter pour la réponse de Fred, char* c = new char[length](); ]

21voto

mrkj Points 1985

Peut-être utiliser std::fill_n() ?

 char* c = new char[length];
std::fill_n(c,length,0);
 

13voto

AndreyT Points 139512

La forme tableau de new-expression accepte une seule forme d'initialiseur: un () vide. Cela, BTW, a le même effet que les {} vides de votre initialisation non dynamique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X