inicializar un vector a ceros C ++ / C ++ 11

118

Sé que en C ++ 11 agregaron la función para inicializar una variable a cero como tal

double number = {}; // number = 0
int data{};  // data = 0

¿Existe una forma similar de inicializar un std::vectorde una longitud fija a todos los ceros?

PyCthon
fuente
13
std::vector<int> vec(42);
Avakar
9
por cierto, esto no es nuevo en c ++ 11, también puede hacer esto en versiones anteriores
balki

Respuestas:

220

No necesita listas de inicialización para eso:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
ronag
fuente
37
No es necesario que indique explícitamente el 0, ¿verdad? solo vector(length)debería funcionar?
Daniel Gratzer
38
@jozefg: Sí, funcionaría, aunque no hay nada de malo en ser explícito sobre lo que quiere que haga el código.
Ronag
1
@ronag escribí mi propia respuesta porque ser explícito en este caso no es necesariamente un buen ejemplo si int no es el tipo con el que está trabajando. La programación general está disponible en c ++, pero cuando me recordaron que puede omitir el argumento por completo, eliminé mi respuesta.
Johannes Schaub - litb
1
Un vector se inicializa a 0 automáticamente, a menos que especifique algún otro valor en la declaración, como mostró ronag.
Nikos
¿Es posible reinicializar todos los elementos de Global Vector ZEROcon eficientemente sin usar bucles for ??????
Ankit Mishra
0

La inicialización de un vector que tenga estructura, clase o unión se puede hacer de esta manera

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Dexter
fuente