inicializar um vetor para zeros C ++ / C ++ 11


117

Eu sei que em C ++ 11 eles adicionaram o recurso para inicializar uma variável para zero como tal

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

Existe uma maneira semelhante de inicializar um std::vectorde comprimento fixo para todos os zeros?


13
std::vector<int> vec(42);
avakar

9
btw, isso não é novo no c ++ 11, você pode fazer isso nas versões anteriores também
balki

Respostas:


219

Você não precisa de listas de inicialização para isso:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
Você não precisa declarar explicitamente o 0, precisa? só vector(length)deve funcionar?
Daniel Gratzer

37
@jozefg: Sim, funcionaria, embora não haja nenhum mal em ser explícito sobre o que você deseja que o código faça.
ronag

1
@ronag eu escrevi minha própria resposta porque ser explícito nesse caso não é necessariamente um bom exemplo se int não for o tipo com o qual ele está trabalhando. A programação gereral está disponível em c ++, mas quando fui lembrado de que você pode omitir o argumento por completo, removi minha resposta.
Johannes Schaub - litb

1
Um vetor é inicializado em 0 automaticamente, a menos que você especifique algum outro valor na declaração, como o ronag mostrou.
Nikos

É possível reinicializar todos os elementos do Global Vector ZEROcom eficiência sem usar loops for ??????
Ankit Mishra

0

A inicialização de um vetor com estrutura, classe ou união pode ser feita desta forma

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.