How do you initialise a dynamic array in C++?
Solution 1:
char* c = new char[length]();
Solution 2:
Two ways:
char *c = new char[length];
std::fill(c, c + length, INITIAL_VALUE);
// just this once, since it's char, you could use memset
Or:
std::vector<char> c(length, INITIAL_VALUE);
In my second way, the default second parameter is 0 already, so in your case it's unnecessary:
std::vector<char> c(length);
[Edit: go vote for Fred's answer, char* c = new char[length]();
]
Solution 3:
Maybe use std::fill_n()
?
char* c = new char[length];
std::fill_n(c,length,0);
Solution 4:
The array form of new-expression accepts only one form of initializer: an empty ()
. This, BTW, has the same effect as the empty {}
in your non-dynamic initialization.
The above applies to pre-C++11 language. Starting from C++11 one can use uniform initialization syntax with array new-expressions
char* c = new char[length]{};
char* d = new char[length]{ 'a', 'b', 'c' };